home *** CD-ROM | disk | FTP | other *** search
/ MacTech 1 to 12 / MacTech-vol-1-12.toast / Reference / the cmsp digests ('94-'97) / csmp digest Vol 3 No 053 < prev    next >
Internet Message Format  |  1997-05-06  |  86KB

  1. From: pottier@clipper.ens.fr (Francois Pottier)
  2. Subject: csmp-digest-v3-053
  3. Date: Mon, 5 Sep 1994 15:28:25 +0200 (MET DST)
  4.  
  5. C.S.M.P. Digest             Mon, 05 Sep 94       Volume 3 : Issue 53
  6.  
  7. Today's Topics:
  8.  
  9.         A real funny story
  10.         AppleScript: event times out
  11.         C++ Virtual Destructor Q
  12.         Enum size -- what's the LCD?
  13.         Followup on 'Safe Save' problem - still ticking!
  14.         MW DebugNew Tip
  15.         Scrollbars in Dialogs?
  16.         Should new programs still be System 6 compatible?
  17.         The System 7.5 Think Debugger Bug - and fix!
  18.         Think Debugger & INIT source code
  19.         [Q] How to do non-bypassable INIT?
  20.         malloc problem in CW-4
  21.  
  22.  
  23.  
  24. The Comp.Sys.Mac.Programmer Digest is moderated by Francois Pottier
  25. (pottier@clipper.ens.fr).
  26.  
  27. The digest is a collection of article threads from the internet newsgroup
  28. comp.sys.mac.programmer.  It is designed for people who read c.s.m.p. semi-
  29. regularly and want an archive of the discussions.  If you don't know what a
  30. newsgroup is, you probably don't have access to it.  Ask your systems
  31. administrator(s) for details.  If you don't have access to news, you may
  32. still be able to post messages to the group by using a mail server like
  33. anon.penet.fi (mail help@anon.penet.fi for more information).
  34.  
  35. Each issue of the digest contains one or more sets of articles (called
  36. threads), with each set corresponding to a 'discussion' of a particular
  37. subject.  The articles are not edited; all articles included in this digest
  38. are in their original posted form (as received by our news server at
  39. nef.ens.fr).  Article threads are not added to the digest until the last
  40. article added to the thread is at least two weeks old (this is to ensure that
  41. the thread is dead before adding it to the digest).  Article threads that
  42. consist of only one message are generally not included in the digest.
  43.  
  44. The digest is officially distributed by two means, by email and ftp.
  45.  
  46. If you want to receive the digest by mail, send email to listserv@ens.fr
  47. with no subject and one of the following commands as body:
  48.     help                        Sends you a summary of commands
  49.     subscribe csmp-digest Your Name    Adds you to the mailing list
  50.     signoff csmp-digest            Removes you from the list
  51. Once you have subscribed, you will automatically receive each new
  52. issue as it is created.
  53.  
  54. The official ftp info is //ftp.dartmouth.edu/pub/csmp-digest.
  55. Questions related to the ftp site should be directed to
  56. scott.silver@dartmouth.edu. Currently no previous volumes of the CSMP
  57. digest are available there.
  58.  
  59. Also, the digests are available to WAIS users.  To search back issues
  60. with WAIS, use comp.sys.mac.programmer.src. With Mosaic, use
  61. http://www.wais.com/wais-dbs/comp.sys.mac.programmer.html.
  62.  
  63.  
  64. -------------------------------------------------------
  65.  
  66. >From nick+@pitt.edu ( nick.c )
  67. Subject: A real funny story
  68. Date: Fri, 19 Aug 94 21:40:04 GMT
  69. Organization: The Pitt, Chemistry
  70.  
  71.  
  72. Folks:
  73.  
  74.     A friend of mine just sent me this, personally I think it's
  75.       hilarious (so long as you don't work for MS :-).  Enjoy,
  76.  
  77.  
  78. - --
  79.  
  80.  
  81. "Star Trek Lost Episodes" transcript.
  82.  
  83. <Picard> "Mr. LaForge, have you had any success with your
  84. attempts at finding a weakness with the Borg?  And Mr. Data,
  85. have you been able to access their command pathways?"
  86.  
  87. <Geordi> "Yes, Captain.  In fact, we found the answer by
  88. searching through our archives on late twentieth-century
  89. computing technology."
  90.  
  91. <Geordi presses a key, and a logo appears on the computer
  92. screen.>
  93.  
  94. <Riker looks puzzled.> "What the hell is 'Microsoft'?"
  95.  
  96. <Data turns to answer.> "Allow me to explain.  We will send
  97. this program, for some reason called 'Windows,' through
  98. the Borg command pathways.  Once inside their root com-
  99. mand unit, it will begin consuming system resources at an
  100. unstoppable rate."
  101.  
  102. <Picard> "But the Borg have the ability to adapt.  Won't
  103. they alter their processing systems to increase their storage
  104. capacity?"
  105.  
  106. <Data> "Yes, Captain.  But when 'Windows' detects this, it
  107. will create a new version of itself called an 'upgrade.'  The
  108. use of resources increases exponentially with each iteration.
  109. The Borg will not be able to adapt quickly enough.
  110. Eventually all of their processing ability will be taken over
  111. and none will be available for their normal operational
  112. functions."
  113.  
  114. <Picard> "Excellent work.  This is even better than that
  115. 'unsolvable geometric shape' idea."
  116.  
  117. <. . . 15 minutes later . . .>
  118.  
  119. <Data> "Captain, we have successfully installed the
  120. 'Windows' in the command unit and, as expected, it
  121. immediately consumed 85% of all resources.  We, however,
  122. have not received any confirmation of the expected
  123. 'upgrade.'"
  124.  
  125. <Geordi> "Our scanners have picked up an increase in Borg
  126. storage and CPU capacity to compensate, but we still have no
  127. indication of an 'upgrade' to compensate for their increase."
  128.  
  129. <Picard> "Data, scan the history books again and determine
  130. if there is something we have missed."
  131.  
  132. <Data> "Sir, I believe there is a reason for the failure in the
  133. 'upgrade.'  Apparently the Borg have circumvented that part
  134. of the plan by not sending in their 'registration cards.'"
  135.  
  136. <Riker>  "Captain, we have no choice.  Requesting
  137. permission to begin emergency escape sequence 3F . . ."
  138.  
  139. <Geordi, excited>  "Wait, Captain, I just detected that their
  140. CPU capacity has suddenly dropped to 0%!"
  141.  
  142. <Picard> "Data, what do your scanners show?"
  143.  
  144. <Data> "Apparently the Borg have found the internal
  145. 'Windows' module named 'solitaire' and it has used up all
  146. the CPU capacity."
  147.  
  148. <Picard> "Let's wait and see how long this 'solitaire' can
  149. reduce their functionality."
  150.  
  151. <. . . Two hours pass . . .>
  152.  
  153. <Riker> "Geordi, what's the status of the Borg?"
  154.  
  155. <Geordi> "As expected the Borg are attempting to re-
  156. engineer to compensate for increased CPU and storage
  157. demands, but each time they successfully increase resources
  158. I have set up our closest deep space monitor beacon to
  159. transmit more 'Windows' modules from something called
  160. the 'Microsoft fun-pack.'"
  161.  
  162. <Picard> "How much time will that buy us?"
  163.  
  164. <Data> "Current Borg solution rates allow me to predict an
  165. interest time span of 6 more hours."
  166.  
  167. <Geordi> "Captain, another vessel has entered our sector."
  168.  
  169. <Picard> "Identify."
  170.  
  171. <Data> "It appears to have markings similar to the
  172. 'Microsoft' logo."
  173.  
  174. <Over the speakers> "THIS IS ADMIRAL BILL GATES
  175. OF THE MICROSOFT FLAGSHIP MONOPOLY.  WE
  176. HAVE POSITIVE CONFIRMATION OF UN-
  177. REGISTERED SOFTWARE IN THIS SECTOR.
  178. SURRENDER ALL ASSETS AND WE CAN AVOID ANY
  179. TROUBLE.  YOU HAVE TEN SECONDS."
  180.  
  181. <Data> "The alien ship has just opened its forward hatches
  182. and released thousands of humanoid shaped objects."
  183.  
  184. <Picard> "Magnify forward viewer on the alien craft."
  185.  
  186. <Riker> "Good God Captain!  Those are humans floating
  187. straight toward the Borg ship with no life support suits!
  188. How can they survive the tortures of deep space?!"
  189.  
  190. <Data> "I do not believe that those are humans sir; if you will
  191. look closer, I believe you will see that they are carrying
  192. something recognized in the twenty-first century as doe-skin
  193. leather briefcases, and wearing Armani suits."
  194.  
  195. <Riker and Picard together horrified> "Lawyers!!"
  196.  
  197. <Geordi> "It can't be.  All the lawyers were rounded up and
  198. sent hurtling into the sun in 2017 during the great awaken-
  199. ing."
  200.  
  201. <Data> "True, but apparently some must have survived."
  202.  
  203. <Riker> "They have surrounded the Borg ship and are
  204. covering it with all types of papers."
  205.  
  206. <Data> "I believe that is known in ancient vernacular as 'red
  207. tape.'  It often proves fatal.
  208.  
  209. <Riker> "They're tearing the Borg to pieces!"
  210.  
  211. <Picard> "Turn off the monitors.  I can't stand to watch.  Not
  212. even the Borg deserve that."
  213.  
  214.  
  215.  
  216.   Disclaimer: Just my opinion.
  217.                                     _/   _/  _/  _/_/_/   _/   _/  
  218.      Interet: nick@pitt.edu        _/_/ _/  _/  _/   _/  _/_/_/    
  219.       eWorld: nick                _/ _/_/  _/  _/       _/ _/      
  220.          CIS: 71232,766          _/   _/  _/   _/_/_/  _/   _/     
  221.     
  222.            "Science is nothing but perception" - Plato
  223.  
  224. ---------------------------
  225.  
  226. >From kocher@lts.sel.alcatel.de (Hartmut Kocher US/ESA 60/1L/2? #5629)
  227. Subject: AppleScript: event times out
  228. Date: Mon, 22 Aug 94 08:33:35 GMT
  229. Organization: SEL-Alcatel LTS Dept. US/ES
  230.  
  231. I've written a small AppleScript, that copies a few folders around
  232. using the scriptable Finder. My problem is that if one of these folders
  233. holds many files, the reply from the Finder takes too long and the
  234. reply times out (aborting the script :-( ).
  235.  
  236. How can I set the timeout value, so my script is willing to wait
  237. longer fro a reply?
  238.  
  239. Thanks for your suggestions.
  240.  
  241. -- 
  242. +==============================|==============================+
  243. | Hartmut Kocher               |                              |
  244. | Technical Consultant         | All opinions expressed here  |
  245. | Rational GmbH                | are my own.                  |
  246. | Rosenstrasse 7               |                              |
  247. | 82049 Pullach im Isartal     | I know you guessed it,       |
  248. | Germany                      | but it keeps my lawyer happy.|
  249. | Email: hwk@rational.com      |                              |
  250. +==============================|==============================+
  251.  
  252. +++++++++++++++++++++++++++
  253.  
  254. >From dmcleod@hpb.hwc.ca (D.A. McLeod)
  255. Date: 22 Aug 1994 13:32:42 GMT
  256. Organization: Health Canada
  257.  
  258. Hartmut Kocher US/ESA 60/1L/2? #5629 (kocher@lts.sel.alcatel.de) wrote:
  259. : How can I set the timeout value, so my script is willing to wait
  260. : longer fro a reply?
  261.  
  262. with timeout of #### seconds
  263.      .
  264.      .
  265.      .
  266. end timeout
  267.  
  268. +++++++++++++++++++++++++++
  269.  
  270. >From engelhar@bga.com (Michael Engelhart)
  271. Date: 22 Aug 1994 15:38:09 GMT
  272. Organization: Apple Travel
  273.  
  274. In article <1994Aug22.083335.25853@lts.sel.alcatel.de>,
  275. kocher@lts.sel.alcatel.de (Hartmut Kocher US/ESA 60/1L/2? #5629) wrote:
  276.  
  277. > I've written a small AppleScript, that copies a few folders around
  278. > using the scriptable Finder. My problem is that if one of these folders
  279. > holds many files, the reply from the Finder takes too long and the
  280. > reply times out (aborting the script :-( ).
  281. > How can I set the timeout value, so my script is willing to wait
  282. > longer fro a reply?
  283. > Thanks for your suggestions.
  284. > -- 
  285. > +==============================|==============================+
  286. > | Hartmut Kocher               |                              |
  287. > | Technical Consultant         | All opinions expressed here  |
  288. > | Rational GmbH                | are my own.                  |
  289. > | Rosenstrasse 7               |                              |
  290. > | 82049 Pullach im Isartal     | I know you guessed it,       |
  291. > | Germany                      | but it keeps my lawyer happy.|
  292. > | Email: hwk@rational.com      |                              |
  293. > +==============================|==============================+
  294.  
  295.  
  296. Hartmut,
  297.  
  298. simply enclose your routine with the following:
  299.  
  300. with timeout of 400 seconds --use any value you want, the default is 120
  301. seconds
  302.      your routine
  303. end timeout
  304.  
  305. Mike
  306.  
  307. ---------------------------
  308.  
  309. >From jpek@umich.edu (Jeff Pek)
  310. Subject: C++ Virtual Destructor Q
  311. Date: 19 Aug 1994 22:05:08 GMT
  312. Organization: U of Mich (MBA)
  313.  
  314. I wonder if someone could clear the air around our office about why
  315. virtual destructors should or should not be used. Specifically, I'm
  316. interested in Metrowerks' compiler's implementation.
  317.  
  318. 1) Why would I want to/need to declare a destructor virtual?
  319. 2) What happens if I don't?
  320.  
  321. Thanks very much!
  322. Jeff
  323.  
  324. - -------------------------------------------
  325. Jeff Pek                       jpek@umich.edu
  326. Emerald Intelligence / University of Michigan
  327.  
  328. +++++++++++++++++++++++++++
  329.  
  330. >From mwron@aol.com (MW Ron)
  331. Date: 19 Aug 1994 19:44:06 -0400
  332. Organization: America Online, Inc. (1-800-827-6364)
  333.  
  334. In article <333aak$fj8@lastactionhero.rs.itd.umich.edu>, jpek@umich.edu
  335. (Jeff Pek) writes:
  336.  
  337. >>1) Why would I want to/need to declare a destructor virtual?
  338. >>2) What happens if I don't?
  339.  
  340. 1) You need to declare a virtual destructor when you have a base class,
  341. its destructor is different than the derived classes destructor, and
  342. objects are deleted via pointer or refernce to base class. ( a good habit,
  343. declare it for all base classes )
  344.  
  345. 2) if you don't, you will not guarantee all objects will be deleted when
  346. an object is deleted, if it is accessed as a base class poiter.
  347.  
  348. Scott Meyers in Effective C++ explains this quite well.
  349.  
  350. Ron Liechty
  351. RonL@metrowerks.com
  352. Metrowerks Inc.
  353.  
  354. +++++++++++++++++++++++++++
  355.  
  356. >From neeri@iis.ee.ethz.ch (Matthias Neeracher)
  357. Date: 19 Aug 1994 23:19:32 GMT
  358. Organization: Swiss Federal Institute of Technology (ETHZ)
  359.  
  360. jpek@umich.edu (Jeff Pek) writes:
  361. >I wonder if someone could clear the air around our office about why
  362. >virtual destructors should or should not be used. Specifically, I'm
  363. >interested in Metrowerks' compiler's implementation.
  364.  
  365. >1) Why would I want to/need to declare a destructor virtual?
  366.  
  367. As a rule of thumb, as soon as you have a virtual function for a class,
  368. you should also have a virtual destruction.
  369.  
  370. >2) What happens if I don't?
  371.  
  372. As an example, take:
  373.  
  374. class A ...
  375. class B : public A ...
  376.  
  377. A * pa = new B;
  378.  
  379. delete pa;
  380.  
  381. Unless A has a virtual destructor, no destructor for B will be executed on the
  382. object pointed to by pa, which is would often be desirable.
  383.  
  384. Matthias
  385.  
  386. - ---
  387. Matthias Neeracher <neeri@iis.ee.ethz.ch> http://err.ethz.ch/members/neeri.html
  388.    "There once was an Age of Reason, but we've progressed beyond it."
  389.                                    -- Ayn Rand, _Atlas Shrugged_
  390.  
  391. +++++++++++++++++++++++++++
  392.  
  393. >From gurgle@dnai.com (Pete Gontier)
  394. Date: Fri, 19 Aug 1994 20:17:34 -0800
  395. Organization: Integer Poet Software
  396.  
  397. In article <333aak$fj8@lastactionhero.rs.itd.umich.edu>, jpek@umich.edu
  398. (Jeff Pek) wrote:
  399.  
  400. > 1) Why would I want to/need to declare a (C++) destructor virtual?
  401. > 2) What happens if I don't?
  402.  
  403. The Annotated C++ Reference Manual (commonly known as "the ARM"), Ellis
  404. and Stroustup, ISBN, 0-201-51459-1, chapter 12.4 (page 276 in my
  405. printing).
  406.  
  407. And a note to aid in your reading: non-virtual destructors are the
  408. exception (no pun intended), not the rule.
  409.  
  410. -- 
  411.  Pete Gontier // CTO, Integer Poet Software // gurgle@dnai.com
  412.  
  413.  "Even during a particularly harsh (Colorado) winter... many of the
  414.  300 families in the VCTV (movies-on-demand) trial continued to go
  415.  to video stores." -- eis@murrow.tufts.edu, in Wired 2.09 p62
  416.  
  417. +++++++++++++++++++++++++++
  418.  
  419. >From mwron@aol.com (MW Ron)
  420. Date: 20 Aug 1994 12:20:01 -0400
  421. Organization: America Online, Inc. (1-800-827-6364)
  422.  
  423. In article <gurgle-1908942017340001@gurgle.dnai.com>, gurgle@dnai.com
  424. (Pete Gontier) writes:
  425.  
  426. Here is a short example of a virtual destructor in use. remove the virtual
  427. keyword and you will see that only the base class's destructor is called.
  428. Ron Liechty
  429. RonL@metrowerks.com
  430. Metrowerks Inc.
  431.  
  432. #include <iostream>
  433.  
  434. class base {
  435.   public:
  436.      int *a;
  437.   protected:
  438.      base() { a = new int(1);}
  439.   public:
  440.      virtual ~base()  { cout << "deleteting base "; delete a;};
  441. };
  442.  
  443. class base2 : public base {
  444.   public:
  445.       int *b;
  446.   protected:
  447.       base2() { b = new int(1);}
  448.   public:
  449.       virtual ~base2()  { cout << "deleteting base2 "; delete b;};
  450.  };
  451.  
  452.  class d : public base2 {
  453.      public :
  454.        int *c;
  455.      public:
  456.        d() { c = new int(3);}
  457.        ~d() { cout << "deleteting d "; delete c;};
  458.  };    
  459.       
  460.       
  461.  main()
  462.  {
  463.     base *bPtr = new d;
  464.     delete bPtr;
  465.     
  466.     cout << "enter a char " ;
  467.     cin.get();   
  468.     return 0;
  469.  }     
  470.       
  471.  
  472. +++++++++++++++++++++++++++
  473.  
  474. >From ekstrom@aggroup.com (Harold Ekstrom)
  475. Date: Sat, 20 Aug 1994 20:45:15 -0800
  476. Organization: Ag Group
  477.  
  478. In article <333g46$hu5@search01.news.aol.com>, mwron@aol.com (MW Ron) wrote:
  479.  
  480. > In article <333aak$fj8@lastactionhero.rs.itd.umich.edu>, jpek@umich.edu
  481. > (Jeff Pek) writes:
  482. > >>1) Why would I want to/need to declare a destructor virtual?
  483. > >>2) What happens if I don't?
  484. > 1) You need to declare a virtual destructor when you have a base class,
  485. > its destructor is different than the derived classes destructor, and
  486. > objects are deleted via pointer or refernce to base class. ( a good habit,
  487. > declare it for all base classes )
  488. > 2) if you don't, you will not guarantee all objects will be deleted when
  489. > an object is deleted, if it is accessed as a base class poiter.
  490. >  
  491. > Scott Meyers in Effective C++ explains this quite well.
  492. > Ron Liechty
  493. > RonL@metrowerks.com
  494. > Metrowerks Inc.
  495.  
  496. Another good source of answers for this and other common C++
  497. questions is the C++FAQ (rtfm.mit.edu). It was one of the
  498. first things I read when learning C++.
  499.  
  500. harold
  501. - ------------------------------------------------------------
  502. Harold Ekstrom
  503. ekstrom@aggroup.com
  504. ag group, inc.
  505. 2540 camino diablo, suite 200
  506. walnut creek, ca 94596
  507. 510-937-7900 voice
  508. 510-937-2479 fax
  509. 510-937-6704 ara
  510. ftp.aggroup.com anonymous ftp
  511.  
  512.  
  513. ---------------------------
  514.  
  515. >From afrancke@netcom.com (Andrew Francke)
  516. Subject: Enum size -- what's the LCD?
  517. Date: Wed, 17 Aug 1994 02:54:56 GMT
  518. Organization: Netcom Online Communications Services (408-241-9760 login: guest)
  519.  
  520. If I'm not mistaken, the lowest common denominator for enum size is
  521. that presented by MPW 68k C -- variable 1, 2, or 4 bytes. Other Mac C
  522. and C++ compilers support the ANSI definition, sizeof(enum) ==
  523. sizeof(int), but not MPW C. All Mac compilers support variable enum
  524. size just like MPW C.
  525.  
  526. Is this strictly correct?
  527.  
  528. Now, examine the following code:
  529.  
  530. typedef enum
  531. {
  532.     a=255
  533. } one_byte_enum_t;
  534.  
  535. typedef enum
  536. {
  537.     b=65000
  538. } two_byte_enum_t;
  539.  
  540. typedef enum
  541. {
  542.     c=1000000
  543. } three_byte_enum_t;
  544.  
  545. #if defined (powerc) || defined (__power)
  546. #pragma align=mac68k
  547. #endif
  548. struct test1
  549. {
  550.     one_byte_enum_t        mem1;
  551.     two_byte_enum_t        mem2;
  552.     three_byte_enum_t    mem3;
  553. };
  554. #if defined (powerc) || defined (__powerc)
  555. #pragma align reset // or whatever it is
  556. #endif
  557.  
  558. The $10,000,000 question -- do these structures lay out on every Mac
  559. C compiler in this way:
  560.  
  561. Offset        Byte
  562. from        Contents
  563. &test 1:
  564. - ---------    --------
  565. 0x00000000:    mem1
  566. 0x00000001:    <pad>
  567. 0x00000002:    mem2
  568. 0x00000003:    mem2
  569. 0x00000004:    mem3
  570. 0x00000005:    mem3
  571. 0x00000006:    mem3
  572. 0x00000007:    mem3
  573.  
  574. How about stack alignment? If I declare a function:
  575.  
  576. void
  577. foo ( one_byte_enum a, two_byte_enum b, three_byte_enum c );
  578.  
  579. ...what will the stack look like? Will it be the same for all Mac C/C++
  580. compilers?
  581.  
  582. Example stack:
  583.          1   2   3   4   5   6   7   8
  584. SP-0x8:  c   c   c   c   b   b <pad> a
  585. SP:
  586.  
  587. (Sorry if this last example isn't that clear -- the stack is being
  588. displayed in hi-lo, left to right order, assuming that all parameters
  589. have been pushed and we're about to JSR to foo)
  590.  
  591. Thanks in advance for your insight.
  592.  
  593. Andy Francke
  594.  
  595. +++++++++++++++++++++++++++
  596.  
  597. >From mclow@san_marcos.csusm.edu (Marshall Clow)
  598. Date: Wed, 17 Aug 1994 00:53:32 -0800
  599. Organization: Aladdin Systems
  600.  
  601. In article <afranckeCuns3L.MuC@netcom.com>, afrancke@netcom.com (Andrew
  602. Francke) wrote:
  603.  
  604. > If I'm not mistaken, the lowest common denominator for enum size is
  605. > that presented by MPW 68k C -- variable 1, 2, or 4 bytes. Other Mac C
  606. > and C++ compilers support the ANSI definition, sizeof(enum) ==
  607. > sizeof(int), but not MPW C. All Mac compilers support variable enum
  608. > size just like MPW C.
  609. > Is this strictly correct?
  610. >
  611.    No. It's wrong in several areas.
  612.  
  613. [ code deleted ]
  614. > The $10,000,000 question -- do these structures lay out on every Mac
  615. > C compiler in this way:
  616. [ more code deleted ]
  617.  
  618. No. Different compilers allocated sizes for enums differently. I believe
  619. that the following is true:
  620.  
  621. 1) MPW C (68K) -- enums are 4 bytes
  622.  
  623. 2) Think C (68K) -- enums are 1, 2, or 4 bytes (based on values) except if
  624. the "Enums are always ints" preference is checked, in which case they are
  625. 2 or 4 bytes depending on how big your ints are.
  626.  
  627. 3) Metrowerks C (68K) -- same as Think C (68K).
  628.  
  629. 4) Metrowerks C (PPC) -- enums are 1, 2, or 4 bytes (based on values)
  630. except if the "Enums are always ints" preference is checked, in which case
  631. they are 4 bytes.
  632.  
  633. 5) PPCC (Apple's MPW based PPC compiler) -- I don't know.
  634. 6) Apple's new PPC C compiler (Beta on ETO #15) -- I don't know
  635. 7) Motorola C (PPC) -- I don't know
  636. 8) Absoft C (PPC) -- I don't know
  637.  
  638. [ I'm sure I forgot someone. ]
  639.  
  640. The ANSI spec (from memory, so don't flame me for wordage) says that enums
  641. must be "compatible with integer type". The rest is up to the compiler
  642. writer.
  643.  
  644. This is one of the non-portable aspects of C.
  645.  
  646. -- Marshall
  647.  
  648. -- 
  649. Marshall Clow
  650. Aladdin Systems
  651. mclow@san_marcos.csusm.edu
  652.  
  653. +++++++++++++++++++++++++++
  654.  
  655. >From becker@Xenon.Stanford.EDU (Denizen of the Deep)
  656. Date: 17 Aug 1994 16:22:16 GMT
  657. Organization: Computer Science Department, Stanford University.
  658.  
  659. In article <mclow-1708940053320001@lpm8.csusm.edu>,
  660. Marshall Clow <mclow@san_marcos.csusm.edu> wrote:
  661. >
  662. >The ANSI spec (from memory, so don't flame me for wordage) says that enums
  663. >must be "compatible with integer type". The rest is up to the compiler
  664. >writer.
  665. >
  666. >This is one of the non-portable aspects of C.
  667. >
  668. >-- Marshall
  669. >
  670.  
  671. >From K&R II, A8.4:
  672.     The identifiers in an enumerator list are declared as constants
  673.     of type int...
  674.  
  675. So there you have it.  In strict ANSI C, enums should take up the same
  676. space as an int on the machine (i.e. 2 or 4 bytes, depending on your
  677. settings and/or compiler).  It's only non-portable in the sense that
  678. different compilers may have different sizes for int; however once the
  679. choice of int size is made, there is no latitude for choosing how to
  680. deal with enums.
  681.  
  682. -Jon
  683.  
  684. +++++++++++++++++++++++++++
  685.  
  686. >From Lars.Farm@nts.mh.se (Lars Farm)
  687. Date: Fri, 19 Aug 1994 10:08:12 +0100
  688. Organization: Mid Sweden University
  689.  
  690. In article <32tdfo$gn2@Times.Stanford.EDU>, becker@Xenon.Stanford.EDU
  691. (Denizen of the Deep) wrote:
  692.  
  693. > From K&R II, A8.4:
  694. >         The identifiers in an enumerator list are declared as constants
  695. >         of type int...
  696. > So there you have it.  In strict ANSI C, enums should take up the same
  697. > space as an int on the machine (i.e. 2 or 4 bytes, depending on your
  698.  
  699. In C perhaps, but not so in C++. enum is not int. An enum can be
  700. initialized by a constant expression of integral type. An enum will
  701. silently be converted to an int where an int is expected (|, &, + ...) but
  702. an int will not silently be converted to an enum, because nothing says it
  703. will fit in the space allocated for the enum. Cast needed.
  704.  
  705. An enum is required to have room for "...the nearest larger binary power
  706. minus 1 and down to 0...". So enum { false,true } is only required to
  707. allocate one bit for the value. [ARM - ANSI/ISO resolutions r.7.2].
  708. Realistically this means that an enum will be allocated 1, 2 or 4 bytes
  709. depending on enumerated constants and whatever the compilers author sees
  710. reasonable. In any event the space allocated to an enum may be smaller
  711. than what is needed for an int provided it has room for any of the enum
  712. constants.
  713.  
  714. Lars
  715.  
  716. -- 
  717. Lars.Farm@nts.mh.se
  718.  
  719. +++++++++++++++++++++++++++
  720.  
  721. >From phils@bedford.symantec.com (Phil Shapiro)
  722. Date: Fri, 19 Aug 1994 12:36:51 -0400
  723. Organization: Symantec Corp.
  724.  
  725. | No. Different compilers allocated sizes for enums differently. I believe
  726. | that the following is true:
  727.  
  728. Only slightly off, with respect to "enums are always ints", see below*.
  729.  
  730. | 1) MPW C (68K) -- enums are 4 bytes
  731. | 2) Think C (68K) -- enums are 1, 2, or 4 bytes (based on values) except if
  732. | the "Enums are always ints" preference is checked, in which case they are
  733. | 2 or 4 bytes depending on how big your ints are.
  734. | 3) Metrowerks C (68K) -- same as Think C (68K).
  735. | 4) Metrowerks C (PPC) -- enums are 1, 2, or 4 bytes (based on values)
  736. | except if the "Enums are always ints" preference is checked, in which case
  737. | they are 4 bytes.
  738. | 5) PPCC (Apple's MPW based PPC compiler) -- I don't know.
  739. | 6) Apple's new PPC C compiler (Beta on ETO #15) -- I don't know
  740. | 7) Motorola C (PPC) -- I don't know
  741. | 8) Absoft C (PPC) -- I don't know
  742.  
  743. 9) Symantec C/C++ -- enums are 1, 2, or 4 bytes based on values. If enums
  744. are always ints is checked, then they are 4 bytes. The rules are the same
  745. for both the 68k and PowerPC compilers.
  746.  
  747. Apple's new PPC C++ compiler (aka MrC) should be the same as Symantec C++,
  748. since they share compiler front ends.
  749.  
  750. (*) In ANSI C, enums are the same size as int, provided that the value
  751. that they contain can be represented in an int. So when you use the "enums
  752. are always ints" option, you're really saying that they're at least as big
  753. as an int. They can be bigger, or unsigned (or both), depending on the
  754. value that they contain.
  755.  
  756. The main thing is that you shouldn't depend on the size of an enum. If you
  757. plan to do I/O with an enum, cast it to a known (portable) type first.
  758.  
  759.    -phil
  760.  
  761. +++++++++++++++++++++++++++
  762.  
  763. >From afrancke@netcom.com (Andrew Francke)
  764. Date: Fri, 19 Aug 1994 21:16:29 GMT
  765. Organization: Netcom Online Communications Services (408-241-9760 login: guest)
  766.  
  767. > The main thing is that you shouldn't depend on the size of an enum. If
  768. > you plan to do I/O with an enum, cast it to a known (portable) type first.
  769. >  -phil
  770.  
  771. I'm afraid this is a moot point in my case. I've already got a sizable
  772. amount of ASN.1-compiler-generated C source with enums a'plenty in
  773. struture declarations.
  774.  
  775. I'll state my question again:
  776. GIVEN THE RIGHT SET OF COMPILER OPTIONS, is not the LCD of enum sizes
  777. the 1-2-4 packing scheme? I yet labor under the impression that MPW C
  778. doesn't even support "enums are ints" as an option.
  779.  
  780. ---------------------------
  781.  
  782. >From redial <redial@netcom.com>
  783. Subject: Followup on 'Safe Save' problem - still ticking!
  784. Date: Sat, 20 Aug 1994 21:46:44 GMT
  785. Organization: NETCOM On-line Communication Services (408 261-4700 guest)
  786.  
  787. Netters -
  788.  
  789. Thanks to all who attempted to help with my 'Safe save' problem.  It did
  790. indeed look as tho  closing the temporary file after the FSpExchangeFiles
  791. swap would solve the problem of the 'File Busy' error message when I
  792. attempted to delete the temporary file.  Unfortunately :-( it didn't.
  793.  
  794. Here's a summary of my Safe Save procedure, which follows the example in
  795. Think C Reference 2.0.  I call StandardPutFile to get the user's input re
  796. the new file.  If the reply is good and we're not replacing an existing
  797. file, I call FSpCreate.  (According to IM:Files this creates a file with
  798. both forks, only they're both empty.)  I then call FSpCreateResFile to
  799. open
  800. the resource fork, and proceed to copy a string resource for the
  801. 'Application missing' error message ('STR ' ID -16396) from my
  802. application's resources into the new file.  I then close the resouce fork
  803. with an FSClose.  Next, I open the data fork using FSpOpenDF.  If no
  804. errors
  805. occur, I proceed to create a temporary file, open its data fork, write the
  806. data into it, close it, exchange its data with the real file, and then
  807. delete the temporary file.  It's at this point I get my first sign of
  808. trouble: OSErr -47, aka 'File busy.'
  809.  
  810. My snooping has revealed the following points of information. 1) When I
  811. attempt to open the newly created document file with ResEdit, I'm told it
  812. doesn't have a resource fork.  2) It does contain the appropriate data in
  813. its data fork.  And 3) if I reboot the computer, the temporary file shows
  814. up in the trashcan in a folder labled 'Rescued items.'
  815.  
  816. >From this, is it obvious to anyone as to what I'm doing wrong?  Any
  817. suggestions on what debugging steps I should take would be greatly
  818. appreciated.
  819.  
  820. TIA. 
  821.  
  822. Ron Goebel                     |  Internet: redial@netcom.com
  823.  
  824. +++++++++++++++++++++++++++
  825.  
  826. >From tgaul@halcyon.com (Troy Gaul)
  827. Date: Sat, 20 Aug 1994 23:05:30 -0700
  828. Organization: Infinity Systems
  829.  
  830. In article <netnewsCuusHx.25A@netcom.com>, redial <redial@netcom.com> wrote:
  831.  
  832. > Here's a summary of my Safe Save procedure, which follows the example in
  833. > Think C Reference 2.0.  I call StandardPutFile to get the user's input re
  834. > the new file.  If the reply is good and we're not replacing an existing
  835. > file, I call FSpCreate.  (According to IM:Files this creates a file with
  836. > both forks, only they're both empty.)  I then call FSpCreateResFile to
  837. > open
  838. > the resource fork, and proceed to copy a string resource for the
  839. > 'Application missing' error message ('STR ' ID -16396) from my
  840. > application's resources into the new file.  I then close the resouce fork
  841. > with an FSClose.  Next, I open the data fork using FSpOpenDF.  If no
  842. > errors
  843. > occur, I proceed to create a temporary file, open its data fork, write the
  844. > data into it, close it, exchange its data with the real file, and then
  845. > delete the temporary file.  It's at this point I get my first sign of
  846. > trouble: OSErr -47, aka 'File busy.'
  847.  
  848. First, it sounds like you're putting the resources into the 'real' file,
  849. and then putting the data into the 'temp' file's data fork, and then doing
  850. a swap on them.  This isn't what you want to do.  The call
  851. FSpExchangeFiles doesn't swap the data fork from one file to another, it
  852. swaps the directory information for the two files.  This means that both
  853. the data and resource forks are swapped.
  854.  
  855. Note, though, that this call does not swap the Finder information (like
  856. Modification Dates) for the files (or the locations in the file system,
  857. i.e. the file named 'Temp File' is still in the Temporary Items Folder).
  858.  
  859. Next, once you have exchanged the files, I _think_ that the refnums you
  860. have for the files are also considered 'swapped' (it's been a while since
  861. I've done this, and I don't have the source code I produced anymore, but a
  862. quick glance into the Think Reference seemed to indicate that).  
  863.  
  864. This means if you have the variables 'realFileRefnum' and
  865. 'tempFileRefnum', which point where their names imply before the swap,
  866. after the swap, they point to the opposite files in the files system. So,
  867. by closing tempFileRefnum, you're really closing the 'real' file, and when
  868. you try to delete the file with tempFileFSSpec, the 'temp' file hasn't
  869. been closed, and you'd get that error.  (Note that although the refnums
  870. are backward, the FSSpecs still point to the files that their names would
  871. imply, because these files are still in the same locations in the file
  872. system, just their contents have been swapped.)
  873.  
  874.  
  875. > My snooping has revealed the following points of information. 
  876. > 1) When I
  877. > attempt to open the newly created document file with ResEdit, I'm told it
  878. > doesn't have a resource fork.  
  879.  
  880. That's because you never added a resource fork to the temp file (where you
  881. should have), you added it to the intended destination file (where it was
  882. then swapped into the temp file, the one you find in the Rescued Items
  883. folder).
  884.  
  885.  
  886. > 2) It does contain the appropriate data in
  887. > its data fork.  And 
  888.  
  889. That's because the swap did in fact occur.
  890.  
  891.  
  892. > 3) if I reboot the computer, the temporary file shows
  893. > up in the trashcan in a folder labled 'Rescued items.'
  894.  
  895. Anything in the temporary folder upon restart will be put into a folder by
  896. that name in the Trash automatically.  This is indicative of the fact that
  897. the temp file was never deleted (as your error message indicated).
  898.  
  899. Hope this helps.
  900. _troy
  901. //////// //////___Troy Gaul____________________tgaul@halcyon.com___//
  902.   //    //      Infinity Systems                                  //
  903.  //    //  //  Redmond, Washington                               //
  904. //    //////____________________________________________________//
  905.  
  906. +++++++++++++++++++++++++++
  907.  
  908. >From h+@nada.kth.se (Jon W{tte)
  909. Date: Sun, 21 Aug 1994 13:28:06 +0200
  910. Organization: Royal Institute of Something or other
  911.  
  912. In article <netnewsCuusHx.25A@netcom.com>,
  913. redial <redial@netcom.com> wrote:
  914.  
  915. >Thanks to all who attempted to help with my 'Safe save' problem.  It did
  916. >indeed look as tho  closing the temporary file after the FSpExchangeFiles
  917. >swap would solve the problem of the 'File Busy' error message when I
  918. >attempted to delete the temporary file.  Unfortunately :-( it didn't.
  919.  
  920. That's because when you call FSpExchangeFiles, the open file 
  921. reference still points into the data you're writing; i e the 
  922. fRefNum now points into the "real" file and not the "temp" file 
  923. which now contains the old data. You have to close the _old_ 
  924. file!
  925.  
  926. /*
  927.  * Add error checking to taste
  928.  * This assumes you're passing the address of your currently-
  929.  * open file's fRefNum, and the FSSpec for it, and that there
  930.  * is indeed a currently-open file.
  931.  */
  932. void
  933. SafeSave (
  934.     short * oldRefNum ,
  935.     const FSSpec * fileLocation )
  936. {
  937.     FSSpec tempSpec ;
  938.     short tempRef = 0 ;
  939.     FInfo fi ;
  940.  
  941.     FSpGetFInfo ( fileLocation , & fi ) ;
  942.  
  943.     MakeTempSpec ( & tempSpec ) ;
  944.     FSpCreate ( & tempSpec , 'trsh' , 'trsh' , smSystemScript ) ;
  945.     FSpOpenDF ( & tempSpec , fsRdWrPerm , & tempRef ) ;
  946.  
  947.     WriteDataToFile ( tempRef ) ;
  948.  
  949.     FSpExchangeFiles ( fileLocation , & tempSpec ) ;
  950.     FSpSetFInfo ( fileLocation , & fi ) ;
  951.     FSClose ( * oldRefNum ) ;
  952.     * oldRefNum = tempRef ;
  953.     FSpDelete ( & tempSpec ) ;
  954. }
  955.  
  956.  
  957. --
  958.   Jon Wätte (h+@nada.kth.se), Hagagatan 1, 113 48 Stockholm, Sweden
  959.     Not speaking for IBM.
  960.  
  961.  
  962. ---------------------------
  963.  
  964. >From Felix Ungman <felix@hu.se>
  965. Subject: MW DebugNew Tip
  966. Date: 22 Aug 94 14:06:13 +0000
  967. Organization: (none)
  968.  
  969. I want to thank MW for the DebugNew module! Even though my code
  970. was pretty well tested, I tracked down 5 memory leaks after only
  971. 15 minutes of testing!
  972.  
  973. The only unneccecary flaw is that it violates the first rule of tools:
  974. Never, ever, increase the work of the user.
  975.  
  976. Instead of making your code look like a mess of NEW macros
  977. (NEW is defined as "#define NEW new(__FILE__, __LINE__)")
  978. you can simply overide operator new with "#define new new(__FILE__, __LIN=
  979. E__)"
  980.  
  981. Or if you don't want to edit the DebugNew.h file:
  982. #include <DebugNew.h>
  983. #define new NEW
  984.  
  985. Works great in most cases.
  986.  
  987. +++++++++++++++++++++++++++
  988.  
  989. >From dpodwall@world.std.com (Dan Podwall)
  990. Date: Mon, 22 Aug 1994 15:26:57 GMT
  991. Organization: Metrowerks, Inc.
  992.  
  993. Felix Ungman (felix@hu.se) wrote:
  994. : Instead of making your code look like a mess of NEW macros
  995. : (NEW is defined as "#define NEW new(__FILE__, __LINE__)")
  996. : you can simply overide operator new with "#define new new(__FILE__, __LIN=
  997. : E__)"
  998.  
  999. There reason it isn't done that way is because it would break the array form 
  1000. of operator new, e.g.
  1001.   char* p = new char[10];
  1002.  
  1003. You can't currently override the array operator new.
  1004.  
  1005. I agree that if you don't need the array version then your modification is
  1006. handy.
  1007.  
  1008. Dan Podwall
  1009. Metrowerks, Inc.
  1010.  
  1011. ---------------------------
  1012.  
  1013. >From peter.lewis@info.curtin.edu.au (Peter N Lewis)
  1014. Subject: Scrollbars in Dialogs?
  1015. Date: Sun, 21 Aug 1994 18:51:33 +0800
  1016. Organization: NCRPDA, Curtin University
  1017.  
  1018. Hi All,
  1019.  
  1020. Simple question, how do you do scroll bars as dialog items?  I can set up
  1021. the CNTL resource and then make a control item in the dialog, and the
  1022. scontrol appears, and the dialog manager does all the tracking for it
  1023. (tracks the clicks on the arrows and highlights them, and drags the thumb
  1024. around).  But the clicks on the arrows don't seem to change the value of
  1025. the control.  Do I have to install some sort of proc to track them?  It
  1026. can't be that hard, but I checked another program and it used a user item
  1027. and created it's own control, so maybe it is?
  1028.    Peter.
  1029. -- 
  1030. Peter N Lewis <peter.lewis@info.curtin.edu.au> - Macintosh TCP fingerpainter
  1031.  
  1032. +++++++++++++++++++++++++++
  1033.  
  1034. >From rmah@panix.com (Robert Mah)
  1035. Date: Sun, 21 Aug 1994 15:00:50 -0500
  1036. Organization: One Step Beyond
  1037.  
  1038. peter.lewis@info.curtin.edu.au (Peter N Lewis) wrote:
  1039.  
  1040. ) Simple question, how do you do scroll bars as dialog items?  I can set up
  1041. ) the CNTL resource and then make a control item in the dialog, and the
  1042. ) scontrol appears, and the dialog manager does all the tracking for it
  1043.  
  1044. I put a user item over (under?) the scroll bar item to catch clicks before
  1045. they get to the scroll bar itself.  This way, you can still use ResEdit (or
  1046. whatever) to edit your dialog.
  1047.  
  1048. And, yeah, you have to manually track the the arrows using a callback.
  1049.  
  1050. Cheers,
  1051. Rob
  1052. _____________________________________________________________________
  1053. Robert S. Mah           Software Development          +1.212.947.6507
  1054. One Step Beyond        and Network Consulting          rmah@panix.com
  1055.  
  1056. +++++++++++++++++++++++++++
  1057.  
  1058. >From tclement@hmc.edu (Todd Clements)
  1059. Date: 22 Aug 1994 02:22:22 GMT
  1060. Organization: Harvey Mudd College, Claremont CA USA
  1061.  
  1062. Check out DialogBits on ftp.apple.com (I think in the snippets
  1063. directory)... it's in C, but I'm sure you can figure it out. =)
  1064.  
  1065. Todd
  1066. --
  1067. tclement@hmc.edu   Todd Clements - Chem nerd at Harvey Mudd College
  1068. "In the beginning, there was nothing.  And God said, 'Let there be LIGHT!'
  1069. And there was still nothing; but now you could see it."
  1070.  
  1071.  
  1072. ---------------------------
  1073.  
  1074. >From Ola.Montan@malmo.trab.se (Ola Montan)
  1075. Subject: Should new programs still be System 6 compatible?
  1076. Date: Wed, 3 Aug 1994 11:32:14 GMT
  1077. Organization: Telia Research AB
  1078.  
  1079. I'm writing new programs for the Macintosh and I wonder:
  1080.  
  1081. - Is it OK today to assume that the user have System 7.0 or later, or do
  1082. I have to make it possible to run the program on System 6 or even System
  1083. 5?
  1084.  
  1085. - If I have to be able to run on System 6, what do I have to think about?
  1086. All "compatiblity guidelines" tells about what to think about to run in
  1087. System 7.
  1088.  
  1089. / Ola Montán
  1090.  
  1091. +++++++++++++++++++++++++++
  1092.  
  1093. >From decartwr@newstand.syr.edu (Dana Cartwright 3rd)
  1094. Date: 3 Aug 1994 12:23:13 GMT
  1095. Organization: Syracuse University, Syracuse NY, USA
  1096.  
  1097. Ola Montan (Ola.Montan@malmo.trab.se) wrote:
  1098. : I'm writing new programs for the Macintosh and I wonder:
  1099.  
  1100. : - Is it OK today to assume that the user have System 7.0 or later, or do
  1101. : I have to make it possible to run the program on System 6 or even System
  1102. : 5?
  1103.  
  1104. I'll add two more questions to your list: 68000 compatibility, and
  1105. older versions of QuickDraw.  I keep an "old" SE around and run my
  1106. software on it, but I'm darned if I know why.  Preserving compability
  1107. with these older systems is less and less attractive (to the developer,
  1108. at any rate!).  Development goes forward (in my case) on a 68040.
  1109.  
  1110. If you use floating windows (like Dean Yu's), you'll find they work
  1111. differently on older ROM's (at least, I suspect it's code in the ROM's
  1112. that's the difference, but that's just a guess on my part).
  1113.  
  1114.  
  1115. +++++++++++++++++++++++++++
  1116.  
  1117. >From nagle@netcom.com (John Nagle)
  1118. Date: Wed, 3 Aug 1994 16:38:21 GMT
  1119. Organization: NETCOM On-line Communication Services (408 261-4700 guest)
  1120.  
  1121. Ola.Montan@malmo.trab.se (Ola Montan) writes:
  1122. >I'm writing new programs for the Macintosh and I wonder:
  1123. >- Is it OK today to assume that the user have System 7.0 or later, or do
  1124. >I have to make it possible to run the program on System 6 or even System
  1125. >5?
  1126.  
  1127.       Unless your application is for the educational or game market,
  1128. forget System 6.  
  1129.  
  1130.                     John Nagle
  1131.  
  1132. +++++++++++++++++++++++++++
  1133.  
  1134. >From h+@nada.kth.se (Jon W{tte)
  1135. Date: Wed, 03 Aug 1994 19:35:33 +0200
  1136. Organization: Royal Institute of Something or other
  1137.  
  1138. In article <31o27h$8q8@newstand.syr.edu>,
  1139.  decartwr@newstand.syr.edu (Dana Cartwright 3rd) wrote:
  1140.  
  1141. >: - Is it OK today to assume that the user have System 7.0 or later, or do
  1142. >: I have to make it possible to run the program on System 6 or even System
  1143. >: 5?
  1144.  
  1145. >I'll add two more questions to your list: 68000 compatibility, and
  1146. >older versions of QuickDraw.  I keep an "old" SE around and run my
  1147.  
  1148. This is covered in the FAQ (the Total Authority Document :-)
  1149.  
  1150. Anyway, there seems to be two ways you can go:
  1151.  
  1152. 1) Does your app require color, or AppleEvents, or QuickTime, or 
  1153. more than 1 MB of memory (for itself)? Or does it require more than 
  1154. one process running at once? Go for System 7 only.
  1155.  
  1156. 2) Is your application in the "typical application" cathegory; word 
  1157. processing, telecommunications, ... People who bought their 
  1158. computers four years ago probably bought what they need already. Go 
  1159. with System 7.
  1160.  
  1161. 3) So you're writing a novelty application which will work well on 
  1162. small screens, in black/white, in a small memory footprint. Here, 
  1163. you might still sell into a bigger market if you work with System 6 
  1164. as well. However, for the majority of applications, it's just not 
  1165. worth it.
  1166.  
  1167. As an example, here is what I _demand_ to run in my newer apps:
  1168. - New File Manager (soon to be renamed the Old New File Manager :-)
  1169. - 32-bit QuickDraw
  1170. - 68020 or better
  1171. - AppleEvents
  1172. Of course I test for these individually, but on failure, I tell 
  1173. users to upgrade to System 7 (or their computer, if the CPU test 
  1174. fails)
  1175.  
  1176. However, some things should NOT be demanded. That Virtual Memory be 
  1177. off is an _evil_ thing, especially on PowerPCs where system 
  1178. performance is BETTER with VM on, as long as your swap file just 
  1179. covers your RAM and another meg or two.
  1180.  
  1181. Cheers,
  1182.  
  1183.                         / h+
  1184.  
  1185. --
  1186.   Jon Wätte
  1187.   Hagagatan 1
  1188.   113 48 Stockholm
  1189.   Sweden
  1190.  
  1191.  
  1192. +++++++++++++++++++++++++++
  1193.  
  1194. >From blm@chinook.halcyon.com (Brian L. Matthews)
  1195. Date: 3 Aug 1994 17:28:09 GMT
  1196. Organization: Northwest Nexus Inc.
  1197.  
  1198. In article <1994Aug3.113214.15566@malmo.trab.se>,
  1199. Ola Montan <Ola.Montan@malmo.trab.se> wrote:
  1200. |- Is it OK today to assume that the user have System 7.0 or later, or do
  1201. |I have to make it possible to run the program on System 6 or even System
  1202. |5?
  1203.  
  1204. In my opinion, don't worry about anything earlier than System 6.  If
  1205. your target market is higher end users (who probably have newer machines
  1206. which don't even run System 6), don't worry about System 6.  If your
  1207. target is lower end users (who can't necessarily afford to upgrade to
  1208. the new machines or have the hardware to run System 7), you need to
  1209. worry about System 6.
  1210.  
  1211. However, whatever you assume about the target machine, make sure your
  1212. software tests your assumptions at run time and reacts gracefully if they're
  1213. wrong.  So if your software requires System 7, test for that, and if you're
  1214. not running on System 7 or later, present an alert stating you need System 7,
  1215. then exit (and of course the code that does this needs to run on System 6,
  1216. and is simple enough it can probably run on earlier systems as well).
  1217. Similarly for things like processor (68000 vs. 68020 vs. PowerPC), Color
  1218. Quickdraw, DSP, etc.
  1219.  
  1220. Brian
  1221.  
  1222. +++++++++++++++++++++++++++
  1223.  
  1224. >From woody@alumni.caltech.edu (William Edward Woody)
  1225. Date: 3 Aug 1994 20:32:35 GMT
  1226. Organization: California Institute of Technology, Alumni Association
  1227.  
  1228. In article <1994Aug3.113214.15566@malmo.trab.se>,
  1229. Ola Montan <Ola.Montan@malmo.trab.se> wrote:
  1230. >I'm writing new programs for the Macintosh and I wonder:
  1231. >
  1232. >- Is it OK today to assume that the user have System 7.0 or later, or do
  1233. >I have to make it possible to run the program on System 6 or even System
  1234. >5?
  1235.  
  1236. According to some information I got from Apple in one of their
  1237. developer's mailings, most users are running under System 7.
  1238. But 'most' means > 50%; not everyone has upgraded yet. It's
  1239. reasonable to support System 6.0.7 as well as System 7.
  1240.  
  1241. >- If I have to be able to run on System 6, what do I have to think about?
  1242. >All "compatiblity guidelines" tells about what to think about to run in
  1243. >System 7.
  1244.  
  1245. What I check for in my standard initialization loop in the
  1246. library I tend to use for all applications are:
  1247.  
  1248. o  Is AppleEvents available?
  1249.  
  1250.    (If they are, I install my Apple Events handler. If
  1251.    they are not, I use CountAppFiles() and GetAppFiles()
  1252.    to get the files which my application was run with.)
  1253.  
  1254. o  Is Color Quickdraw available?
  1255.  
  1256.    (For applications which use color. For applications
  1257.    which use 32 bit color, I also check the features which
  1258.    are available through the gestaltQuickdrawFeatures
  1259.    selector.
  1260.  
  1261. o  Are FSSpec-selectors available?
  1262.  
  1263.    (This sets a global flag. Anytime I want to open a
  1264.    file, I use the FSpOpenDF() call if the flag is set,
  1265.    and HOpen() call if it's clear. One of the cheats
  1266.    I use is to use the fields of the FSSpec data structure
  1267.    to store the Volume RefNum, Directory ID, and file
  1268.    name of the file I'm working with if that flag is
  1269.    clear.
  1270.  
  1271.    Though Apple says not to initialize the fields of a
  1272.    FSSpec by hand, I interpret that as meaning that if
  1273.    FSSpecs are supported by the OS, then you should use
  1274.    FSMakeFSSpec(). Otherwise, an FSSpec is simply 70
  1275.    bytes of storage that's up for grabs.)
  1276.  
  1277. All of the System 7 compatability guidelines (be 32 bit
  1278. clean, work well with MultiFinder, etc., etc., etc.) are
  1279. just generally good hygene.
  1280.  
  1281. And getting into the habit of checking with Gestalt for
  1282. a particular feature is algo just good hygene.
  1283.  
  1284. I hope this helps.
  1285.  
  1286.                     - Bill
  1287. -- 
  1288. - William Edward Woody                  | Disclamer:
  1289.   woody@alumni.cco.caltech.edu             | "He who knows does not speak;
  1290. - In Phase Consulting                   |  He who speaks does not know."
  1291.   337 West California #4; Glendale, CA 91203 |            - Lao Tzu
  1292.  
  1293. +++++++++++++++++++++++++++
  1294.  
  1295. >From lbotez@picard.cs.wisc.edu (Lynda Botez)
  1296. Date: 3 Aug 1994 21:04:49 GMT
  1297. Organization: U of Wisconsin CS Dept
  1298.  
  1299.  
  1300. Excuse me, but do you really tell your users to "upgrade their computer?"
  1301. haha...
  1302.  
  1303. "Your computer sucks; get a "real" computer..."
  1304.  
  1305. Sorry, that just cracks me up... <grin>
  1306.  
  1307.  
  1308. +++++++++++++++++++++++++++
  1309.  
  1310. >From marshall@cais.com (Preston Marshall)
  1311. Date: 3 Aug 1994 18:09:24 GMT
  1312. Organization: Vanguard Research, Inc.
  1313.  
  1314. > Ola Montan (Ola.Montan@malmo.trab.se) wrote:
  1315. > : I'm writing new programs for the Macintosh and I wonder:
  1316. > : - Is it OK today to assume that the user have System 7.0 or later, or do
  1317. > : I have to make it possible to run the program on System 6 or even System
  1318. > : 5?
  1319. I sent E-mail to Apple developer services once suggesting that they
  1320. periodically publish their estimates as to "what was out there" in terms
  1321. of systems and OS's.  They must have a guess as to how many plusses, SE's
  1322. or even IIfx's are stil active and being used.  
  1323.  
  1324. I would like to know what I loose when I decide to make a feature
  1325. mandatory.  The problem is going to come up again when 7.5 gets
  1326. established.
  1327.  
  1328. -- 
  1329. ___________________________________________________________________
  1330. |     Preston Marshall           -       marshall@cais.com        |
  1331. |     Vanguard Research, Inc.    -                                |
  1332. |     10306 Eaton Pl.            -       The opinions are mine,   |
  1333. |     Farifax, Va 22111          -       my employer doesn't care |
  1334. ___________________________________________________________________
  1335.  
  1336. +++++++++++++++++++++++++++
  1337.  
  1338. >From h+@nada.kth.se (Jon W{tte)
  1339. Date: Thu, 04 Aug 1994 11:00:59 +0200
  1340. Organization: Royal Institute of Something or other
  1341.  
  1342. In article <31out3$lme@gap.cco.caltech.edu>,
  1343.  woody@alumni.caltech.edu (William Edward Woody) wrote:
  1344.  
  1345. >According to some information I got from Apple in one of their
  1346. >developer's mailings, most users are running under System 7.
  1347. >But 'most' means > 50%; not everyone has upgraded yet. It's
  1348. >reasonable to support System 6.0.7 as well as System 7.
  1349.  
  1350. A year ago, the 50% limit was already passed. Since then, Apple has 
  1351. sold several million more computers, all of them with 68030s, color 
  1352. quickdraw enabled, and running System 7. People seem to be still 
  1353. living in the pre-1991 world of "lots" of 68000 macs. Face it: the 
  1354. way Apples sales have been taking off the last few years, 68000 and 
  1355. System 6 is a CLEAR minority, and since those computers are at least 
  1356. three years old, they probably don't buy much software anymore.
  1357.  
  1358. The exception is of course the lower educational market; nobody ever 
  1359. spends enough money on educating the coming generation.
  1360.  
  1361. Cheers,
  1362.  
  1363.                     / h+
  1364.  
  1365. --
  1366.   Jon Wätte
  1367.   Hagagatan 1
  1368.   113 48 Stockholm
  1369.   Sweden
  1370.  
  1371.  
  1372. +++++++++++++++++++++++++++
  1373.  
  1374. >From zobkiw@datawatch.com (joe zobkiw)
  1375. Date: Thu, 4 Aug 1994 15:13:35 GMT
  1376. Organization: Datawatch Corporation
  1377.  
  1378. Even if your app doesn't REQUIRE AppleEvents, PPCToolbox, QuickTime, etc.
  1379. I would say don't waste your time supporting System 6. I am currently
  1380. working on a commercial project that must support System 6 and it stinks.
  1381. You can't use the cool icon utilities, can't use the new standard file
  1382. routines, can't tail patch safely, can't depend on color QuickDraw, can't
  1383. use the the nice auto-positioning features of the Window Manager.
  1384.  
  1385. Supporting System 6 consists of carrying a lot of extra baggage - in the
  1386. form of code. Ever date someone who has a lot of extra emotional baggage?
  1387. It's a _very_ similar experience!
  1388.  
  1389. ___________________________________________________________
  1390. _/_/_/_/   Joe Zobkiw                                   ,,,
  1391.     _/     Senior Software Engineer                     - -
  1392.   _/       Datawatch Corporation                         L
  1393. _/_/_/_/   zobkiw@datawatch.com                          -
  1394. How can one expect to program without buying a single IM?
  1395.  
  1396. +++++++++++++++++++++++++++
  1397.  
  1398. >From Jeff Abrahamson <Jeff@purple.com>
  1399. Date: Thu, 04 Aug 94 10:20:40 -0500
  1400. Organization: Purple
  1401.  
  1402.  
  1403. In article <31ok39$sth@nwfocus.wa.com>, Brian L. Matthews writes:
  1404.  
  1405. > However, whatever you assume about the target machine, make sure your
  1406. > software tests your assumptions at run time and reacts gracefully if they're
  1407. > wrong.
  1408.  
  1409. I agree. However, some problems arise:
  1410.  
  1411. - I compile for a 68020, but the user has but a 68000. Unless I'm using MPW, I don't know how to 
  1412. compile just a single segment for 68000 and the rest for 68020.
  1413.  
  1414. - I compile for 68881, but the user doesn't have a 68881. Same problem as above. Note that PPC's 
  1415. crash when you make 68881 calls, so it's not just a low-end-only problem.
  1416.  
  1417. Standard Disclaimer: Of course, these may be easily solved problems to which I simply don't know the 
  1418. answers.
  1419.  
  1420.  
  1421. -Jeff Abrahamson
  1422.  PDI
  1423.  
  1424. +++++++++++++++++++++++++++
  1425.  
  1426. >From Kevin.R.Boyce@gsfc.nasa.gov (Kevin R. Boyce)
  1427. Date: Thu, 04 Aug 1994 13:24:23 -0400
  1428. Organization: NASA/GSFC
  1429.  
  1430. In article <94080410204000115@purple.com>,
  1431.  clio!jeff@vu-vlsi.ee.vill.edu wrote:
  1432.  
  1433. >In article <31ok39$sth@nwfocus.wa.com>, Brian L. Matthews writes:
  1434. >
  1435. >> However, whatever you assume about the target machine, make sure your
  1436. >> software tests your assumptions at run time and reacts gracefully if they're
  1437. >> wrong.
  1438. >
  1439. >I agree. However, some problems arise:
  1440. >
  1441. >- I compile for a 68020, but the user has but a 68000. Unless I'm using
  1442. >MPW, I don't know how to compile just a single segment for 68000 and the
  1443. >rest for 68020.
  1444.  
  1445. Metrowerks I don't know from (yet), but for Think C:
  1446.  
  1447. #pragma options( mc68020, mc68881 )
  1448.  
  1449. to turn them on,
  1450.  
  1451. #pragma options( !mc68020, !mc68881 )
  1452.  
  1453. to turn them off.   See pp. 322ff in the TC6 manual.
  1454.  
  1455. BTW, it would be nice if you used shorter lines in your posts. 
  1456. Newswatcher couldn't clean it up; I had to shlep all the way over to
  1457. BBEdit.  :-)
  1458. -- 
  1459. Kevin      Kevin.R.Boyce@gsfc.nasa.gov
  1460. Goodbye Clipper chip, hello asteroid Zappa.  Is this a great country or what?
  1461.  
  1462. +++++++++++++++++++++++++++
  1463.  
  1464. >From pcastine@jake.prz.tu-berlin.de (Peter Castine)
  1465. Date: Thu, 4 Aug 1994 19:08:29 GMT
  1466. Organization: PRZ TU-Berlin
  1467.  
  1468. marshall@cais.com (Preston Marshall) writes:
  1469. >I sent E-mail to Apple developer services once suggesting that they
  1470. >periodically publish their estimates as to "what was out there" in terms
  1471. >of systems and OS's.  They must have a guess as to how many plusses, SE's
  1472. >or even IIfx's are stil active and being used.  
  1473. >
  1474.  
  1475. If you're a registered developer, you get Apple Direct. They have published
  1476. figures from time to time Re: numbers of various Machines and OS Versions
  1477. out there in userland. Sorry, don't have one here to quote off hand.
  1478.  
  1479. -- 
  1480. Peter Castine               | Oh, wenn jene alten, musikkundigen Gelehrten die
  1481. pcastine@prz.tu-berlin.de   | Modernen hoerten, was wuerden sie tun, was
  1482. Process Control Center      | wuerden sie sagen!
  1483. Technical University Berlin |               -- Jacobus von Luettich (ca. 1330)
  1484.  
  1485. +++++++++++++++++++++++++++
  1486.  
  1487. >From Jens Alfke <jens_alfke@powertalk.apple.com>
  1488. Date: Wed, 3 Aug 1994 20:34:58 GMT
  1489. Organization: Apple Computer
  1490.  
  1491. Jon W{tte, h+@nada.kth.se writes:
  1492. > However, some things should NOT be demanded. That Virtual Memory be 
  1493. > off is an _evil_ thing, especially on PowerPCs where system 
  1494. > performance is BETTER with VM on, as long as your swap file just 
  1495. > covers your RAM and another meg or two.
  1496.  
  1497. Is that true for you? I turned VM on on my 7100 and gave it 1 more MB than I
  1498. have physical RAM, and still it made my CodeWarrior compiles a lot slower.
  1499. (During compilation, after every few files I could hear my disk doing a lot
  1500. of VM thrashing...) It was something like a 20% performance penalty, although
  1501. I didn't time it.
  1502.  
  1503. I believe the problem is that since part of the physical RAM is being used to
  1504. store code, it's not available for heaps, so there's really much greater than
  1505. 1MB difference between the virtual and physical memory available for heap
  1506. zones. It's a shame ... guess I'll have to wait until Copland for good VM.
  1507.  
  1508. --Jens Alfke                           jens_alfke@powertalk.apple.com
  1509.                    "A man, a plan, a yam, a can of Spam ... Bananama!"
  1510.  
  1511. +++++++++++++++++++++++++++
  1512.  
  1513. >From Jens Alfke <jens_alfke@powertalk.apple.com>
  1514. Date: Thu, 4 Aug 1994 20:34:16 GMT
  1515. Organization: Apple Computer
  1516.  
  1517. Jeff Abrahamson, Jeff@purple.com writes:
  1518. > - I compile for a 68020, but the user has but a 68000. Unless I'm using
  1519. MPW, I 
  1520. > don't know how to 
  1521. > compile just a single segment for 68000 and the rest for 68020.
  1522.  
  1523. In C/C++, you do this with #pragma statements. Check your development
  1524. system's manual; THINK and CodeWarrior do this differently but both of them
  1525. let you change most of the compile settings via pragmas. I believe Pascal has
  1526. similar stuff.
  1527.  
  1528. > - I compile for 68881, but the user doesn't have a 68881. Same problem as 
  1529. > above. Note that PPC's 
  1530. > crash when you make 68881 calls, so it's not just a low-end-only problem.
  1531.  
  1532. Again, there are pragmas to turn 881 codegen on and off. If you want to run
  1533. with or without an 881 but take advantage of it if it exists, the best thing
  1534. is probably to include two versions of your core math-intensive routines, one
  1535. compiled for 881 and one not. (You can put the two versions in different
  1536. segments, so only one will ever get loaded.) Then call Gestalt at startup to
  1537. check whether you have an 881, and call one routine or the other depending.
  1538. Or if you're megaconcerned about efficiency, at startup set up some procptrs
  1539. to point to one or the other set of routines, and then call the routines
  1540. through the procptrs.
  1541.  
  1542. --Jens Alfke                           jens_alfke@powertalk.apple.com
  1543.                    "A man, a plan, a yam, a can of Spam ... Bananama!"
  1544.  
  1545. +++++++++++++++++++++++++++
  1546.  
  1547. >From ari@world.std.com (Ari I Halberstadt)
  1548. Date: Fri, 5 Aug 1994 09:25:45 GMT
  1549. Organization: The World Public Access UNIX, Brookline, MA
  1550.  
  1551. In article <zobkiw-0408941013350001@zobkiw.datawatch.com>,
  1552. joe zobkiw <zobkiw@datawatch.com> wrote:
  1553. >Even if your app doesn't REQUIRE AppleEvents, PPCToolbox, QuickTime, etc.
  1554. >I would say don't waste your time supporting System 6. I am currently
  1555. >working on a commercial project that must support System 6 and it stinks.
  1556. >You can't use the cool icon utilities, can't use the new standard file
  1557. >routines, can't tail patch safely, can't depend on color QuickDraw, can't
  1558. >use the the nice auto-positioning features of the Window Manager.
  1559.  
  1560. I don't think tail patching was fully authorized with sys-7.0. I think
  1561. the PowerPC sys software was the first to allow tail-patching for all
  1562. patchable traps, and that was due to the way the MMM (mixed-mode
  1563. mangler) calls patches.
  1564.  
  1565. Color QuickDraw is only supported on CPUs 68K and greater, and was
  1566. supported in systems prior to 7.0 on appropriate hardware.
  1567.  
  1568. >How can one expect to program without buying a single IM?
  1569.  
  1570. Buy all of them on the forthcoming CD :-) Regular $100, but if you
  1571. preorder, then it's only $80. You're not charged till it ships, and
  1572. they'll call to confirm that you still want it. MacWorld show special,
  1573. but Addison-Wesley might extend this beyond the show. I think having
  1574. all of NIM on a CD is essential.
  1575.  
  1576. -- 
  1577. Ari Halberstadt                                 ari@world.std.com
  1578. One generation passes away, and another generation comes: but the
  1579. earth abides for ever. -- Ecclesiastes, 1:4.
  1580.  
  1581. +++++++++++++++++++++++++++
  1582.  
  1583. >From ari@world.std.com (Ari I Halberstadt)
  1584. Date: Fri, 5 Aug 1994 09:40:14 GMT
  1585. Organization: The World Public Access UNIX, Brookline, MA
  1586.  
  1587. In article <Cu226y.MLn@world.std.com>,
  1588. Ari I Halberstadt <ari@world.std.com> wrote:
  1589. >Color QuickDraw is only supported on CPUs 68K and greater, and was
  1590. >supported in systems prior to 7.0 on appropriate hardware.
  1591.  
  1592. Ack, I didn't mean 68K or greater, I meant 68020 and later CPUs.
  1593. -- 
  1594. Ari Halberstadt                                 ari@world.std.com
  1595. One generation passes away, and another generation comes: but the
  1596. earth abides for ever. -- Ecclesiastes, 1:4.
  1597.  
  1598. +++++++++++++++++++++++++++
  1599.  
  1600. >From giles@med.cornell.edu (Aaron Giles)
  1601. Date: Fri, 05 Aug 1994 13:36:13 -0400
  1602. Organization: Cornell University Medical College
  1603.  
  1604. In article <1994Aug3.203458.22623@gallant.apple.com>, Jens Alfke
  1605. <jens_alfke@powertalk.apple.com> wrote:
  1606.  
  1607. > Jon W{tte, h+@nada.kth.se writes:
  1608. > > However, some things should NOT be demanded. That Virtual Memory be 
  1609. > > off is an _evil_ thing, especially on PowerPCs where system 
  1610. > > performance is BETTER with VM on, as long as your swap file just 
  1611. > > covers your RAM and another meg or two.
  1612. > Is that true for you? I turned VM on on my 7100 and gave it 1 more MB than I
  1613. > have physical RAM, and still it made my CodeWarrior compiles a lot slower.
  1614. > (During compilation, after every few files I could hear my disk doing a lot
  1615. > of VM thrashing...) It was something like a 20% performance penalty, although
  1616. > I didn't time it.
  1617.  
  1618. I think CW uses temporary memory during compiles, which will cause
  1619. thrashing in the system heap, where your extra 1MB is probably hanging
  1620. out.  I really really wish Apple would let you set your VM to exactly your
  1621. system memory, so that you can get file mapping without fear of trashing
  1622. in the extra 1MB.  I tried hacking the system file to set VM down to
  1623. exactly equal to my physical memory, but it wasn't too happy after that.
  1624. :-)
  1625.  
  1626. Aaron
  1627. -- 
  1628. Aaron Giles (giles@med.cornell.edu)
  1629. Power Macintosh Developer, Cornell University Medical College
  1630. JPEGView home page: http://www.med.cornell.edu/jpegview.html
  1631. JPEGView FTP site:   ftp://ftp.med.cornell.edu/pub/aarong/jpegview/
  1632.  
  1633. +++++++++++++++++++++++++++
  1634.  
  1635. >From gurgle@dnai.com (Pete Gontier)
  1636. Date: Fri, 05 Aug 1994 11:02:43 -0800
  1637. Organization: Integer Poet Software
  1638.  
  1639. In article <zobkiw-0408941013350001@zobkiw.datawatch.com>,
  1640. zobkiw@datawatch.com (joe zobkiw) wrote:
  1641.  
  1642. > I am currently working on a commercial project that must support System 6
  1643. > and it stinks... You can't ... depend on color QuickDraw...
  1644.  
  1645. You can't depend on Color QuickDraw even under System 7.
  1646.  
  1647. -- 
  1648.  Pete Gontier // CTO, Integer Poet Software // gurgle@dnai.com
  1649.  
  1650.  "Clear-cutting removes all trees... to create new habitats for
  1651.  wildlife. P&G uses this economically and environmentally sound
  1652.  method because it most closely mimics nature's own processes.
  1653.  Clear-cutting also opens the floor to sunshine, thus stimulating
  1654.  growth and providing food for animals."
  1655.     -- Procter & Gamble's "Decision Earth" free school curriculum
  1656.  
  1657. +++++++++++++++++++++++++++
  1658.  
  1659. >From wdh@netcom.com (Bill Hofmann)
  1660. Date: Fri, 5 Aug 1994 18:04:16 GMT
  1661. Organization: Fresh Software
  1662.  
  1663. In article <Cu226y.MLn@world.std.com>, ari@world.std.com (Ari I
  1664. Halberstadt) wrote:
  1665. > I don't think tail patching was fully authorized with sys-7.0. I think
  1666. > the PowerPC sys software was the first to allow tail-patching for all
  1667. > patchable traps, and that was due to the way the MMM (mixed-mode
  1668. > mangler) calls patches.
  1669. Recent threads have discussed that tail patching has been legit with a few
  1670. exceptions (FrontWindow(), apparently, who knows why?) since system 7,
  1671. because of the revised way come-from patches are done by system software.
  1672.  
  1673. -Bill
  1674.  
  1675. -- 
  1676. Bill Hofmann                                   wdh@netcom.com
  1677. Fresh Software and Instructional Design        voice: +1 510 524 0852
  1678. 1640 San Pablo Ave #C, Berkeley CA 94702 USA   fax:   +1 510 524 0853
  1679.  
  1680. +++++++++++++++++++++++++++
  1681.  
  1682. >From wdh@netcom.com (Bill Hofmann)
  1683. Date: Fri, 5 Aug 1994 18:16:35 GMT
  1684. Organization: Fresh Software
  1685.  
  1686. In article <nagleCtywvx.Bys@netcom.com>, nagle@netcom.com (John Nagle) wrote:
  1687. > Ola.Montan@malmo.trab.se (Ola Montan) writes:
  1688. > >I'm writing new programs for the Macintosh and I wonder:
  1689. > >- Is it OK today to assume that the user have System 7.0 or later, or do
  1690. > >I have to make it possible to run the program on System 6 or even System
  1691. > >5?
  1692. >       Unless your application is for the educational or game market,
  1693. > forget System 6.  
  1694. I agree: this is the "proper" approach--evaluate your target market, and
  1695. decide based on this.  So for instance, if you're targeting PowerBooks,
  1696. you can ignore sys 6 (unless you're worried about the transitional Kanji
  1697. sys 6 that lots of people in Japan were running prior to system 7.1). 
  1698. Probably at this point, you could ignore system 6 (maybe even 7.0) for
  1699. mass market if you're targeting the Performa market.  Don't forget to
  1700. factor in development time: 50% may be running  7.5 by the time you finish
  1701. :-(.
  1702.  
  1703. Also, where you *don't* have to assume system 7, don't.  You can and
  1704. should use FSSpec's, and the MakeFSSpec call has glue for pre-7 systems. 
  1705. You can wrap portions that are different in 6 vs 7 (HOpen vs FSpOpenDF:
  1706. who names these things?) in a common routine that has consistent calling
  1707. conventions to maintain maximum compatibility.  Other areas like the
  1708. script manager are so different from release to release of system software
  1709. that one could be forgiven for requiring not just 7.0 but 7.1 (the basis
  1710. of NIM, after all).
  1711.  
  1712. Obviously if you're writing a program to do collaboration, you can require
  1713. 7.1 Pro, or if you're writing a GX Print Utility, you can require GX, so
  1714. that gives you license to require all kindsa things.
  1715.  
  1716. I would still test on 68000 Macs, but more as an afterthought.  I've still
  1717. got a Classic at home and an SE with a jet engine fan in the office
  1718. collecting dust, and occasionally give things a try on there.
  1719.  
  1720. -Bill
  1721.  
  1722. -- 
  1723. Bill Hofmann                                   wdh@netcom.com
  1724. Fresh Software and Instructional Design        voice: +1 510 524 0852
  1725. 1640 San Pablo Ave #C, Berkeley CA 94702 USA   fax:   +1 510 524 0853
  1726.  
  1727. +++++++++++++++++++++++++++
  1728.  
  1729. >From qsi@cnh.wlink.nl (Peter Kocourek)
  1730. Date: 07 Aug 94 16:54:24 +0200
  1731. Organization: Care Net Holland
  1732.  
  1733. Bill Hofmann wrote in a message on 05 Aug 94:
  1734.  
  1735.  BH> Probably at this point, you could ignore system 6 (maybe even 
  1736.  BH> 7.0) for mass market if you're targeting the Performa market. 
  1737.  BH> Don't forget to factor in development time: 50% may be running 
  1738.  BH> 7.5 by the time you finish :-(.
  1739.  
  1740. Considering Apple's idiotic pricing of 7.5, I don't think you should be too
  1741. worried about many users running it. :-/
  1742.  
  1743.  
  1744. YHS:QSI!
  1745.  
  1746. +++++++++++++++++++++++++++
  1747.  
  1748. >From mason@cis.umassd.edu (Mason Bliss)
  1749. Date: Wed, 10 Aug 1994 02:41:11 GMT
  1750. Organization: University of Massachusetts Dartmouth
  1751.  
  1752. In <80b_9408080302@cnh.wlink.nl> qsi@cnh.wlink.nl (Peter Kocourek) writes:
  1753.  
  1754. >Considering Apple's idiotic pricing of 7.5, I don't think you should be too
  1755. >worried about many users running it. :-/
  1756.  
  1757. Heh. Oh, come on! I *want* to go out and spend big bucks so that my system
  1758. disks will install all the stuff I've FTPed *for* me.
  1759.  
  1760. I may be missing something, but it doesn't look like 7.5 has anything terribly
  1761. significant in it. It looks more akin to the jump from 7.0 to 7.5, where we
  1762. could spend all kinds of money to have a fonts folder.
  1763.  
  1764. My preference is this: Write for 7.0. Don't go out of your way to make things
  1765. incompatible with System 6. If you can be compatible with System 6, great, but
  1766. if not, don't worry about it.
  1767.  
  1768. -- 
  1769. Mason L. Bliss  -  mason@acheron.middleboro.ma.us  -  mason@cis.umassd.edu
  1770.  "What diabolical chicken stepped on your forehead and sat on your chin?"
  1771.  
  1772. +++++++++++++++++++++++++++
  1773.  
  1774. >From gurgle@dnai.com (Pete Gontier)
  1775. Date: Tue, 09 Aug 1994 20:19:53 -0800
  1776. Organization: Integer Poet Software
  1777.  
  1778. In article <Cu226y.MLn@world.std.com>, ari@world.std.com (Ari I
  1779. Halberstadt) wrote:
  1780.  
  1781. > I don't think tail patching was fully authorized with sys-7.0.
  1782.  
  1783. Yes, it was, other than FrontWindow or FindWindow or some other call that
  1784. starts with 'F' and ends with 'Window'. :-) I'd be surprised if there were
  1785. an official Apple document with a specific announcement, but Apple
  1786. employees, indeed, Blue Meanies, have posted repeatedly here that this is
  1787. the case.
  1788.  
  1789. -- 
  1790.  Pete Gontier // CTO, Integer Poet Software // gurgle@dnai.com
  1791.  
  1792.  "I am Homer of Borg! Prepare to be... Ooooooo! Donuts!"
  1793.  
  1794. +++++++++++++++++++++++++++
  1795.  
  1796. >From alexr@apple.com (Alexander M. Rosenberg)
  1797. Date: Wed, 10 Aug 1994 19:06:51 GMT
  1798. Organization: Hackers Anonymous
  1799.  
  1800. In article <gurgle-0908942019530001@gurgle.dnai.com>, gurgle@dnai.com
  1801. (Pete Gontier) wrote:
  1802.  
  1803. > In article <Cu226y.MLn@world.std.com>, ari@world.std.com (Ari I
  1804. > Halberstadt) wrote:
  1805. > > I don't think tail patching was fully authorized with sys-7.0.
  1806. > Yes, it was, other than FrontWindow or FindWindow or some other call that
  1807. > starts with 'F' and ends with 'Window'. :-) I'd be surprised if there were
  1808. > an official Apple document with a specific announcement, but Apple
  1809. > employees, indeed, Blue Meanies, have posted repeatedly here that this is
  1810. > the case.
  1811.  
  1812. And I believe that Inside Mac: Operating System Utilities even states this.
  1813.  
  1814. - -------------------------------------------------------------------------
  1815. -  Alexander M. Rosenberg  - INTERNET: alexr@apple.com      - Yoyodyne    -
  1816. -  330 Waverley St., Apt B - UUCP:ucbvax!apple!alexr        - Propulsion  -
  1817. -  Palo Alto, CA 94301     -                                - Systems     -
  1818. -  (415) 329-8463          - Nobody is my employer so       - :-)         -
  1819. -  (408) 974-3110          - nobody cares what I say.       -             -
  1820.  
  1821. +++++++++++++++++++++++++++
  1822.  
  1823. >From qsi@cnh.wlink.nl (Peter Kocourek)
  1824. Date: 11 Aug 94 15:37:07 +0200
  1825. Organization: Care Net Holland
  1826.  
  1827. Mason Bliss wrote in a message on 10 Aug 94:
  1828.  
  1829.  MB> In <80b_9408080302@cnh.wlink.nl> qsi@cnh.wlink.nl (Peter Kocourek) 
  1830.  MB> writes: 
  1831.  
  1832. >Considering Apple's idiotic pricing of 7.5, I don't think you should be too
  1833. >worried about many users running it. :-/
  1834.  
  1835.  MB>  Heh. Oh, come on! I *want* to go out and spend big bucks so 
  1836.  MB> that my system disks will install all the stuff I've FTPed 
  1837.  MB> *for* me. 
  1838.  MB> I may be missing something, but it doesn't look like 7.5 has 
  1839.  MB> anything terribly significant in it. It looks more akin to 
  1840.  MB> the jump from 7.0 to 7.5, where we could spend all kinds of 
  1841.  MB> money to have a fonts folder. 
  1842.  
  1843. This is not entirely fair: System 7.5 does come with QuickDraw GX and
  1844. PowerTalk. Some people will find these enhancements valuable, although
  1845. personally, I probably won't be using either of them. The question is, whether
  1846. the $140 Apple wants to charge for the update is reasonable. I don't happen to
  1847. think so, even if I had a use for GX.
  1848.  
  1849. It is clear that GX is a substantial achievement, and its development cost
  1850. Apple a lot of money. I also understand that Apple wants to offset the
  1851. developments costs. However, I don't this is the best way of going about it.
  1852. The ultimate success of new technologies will be determined by how widely they
  1853. are adopted by users and developers. Developers are less likely to support
  1854. Apple's cool new technologies, if the installed user base is small.
  1855.  
  1856. I think the $140 (or $99 street) would be more reasonable for a more
  1857. substantial upgrade, like Copland.
  1858.  
  1859.  MB> My preference is this: Write for 7.0. Don't go out of your 
  1860.  MB> way to make things incompatible with System 6. If you can be 
  1861.  MB> compatible with System 6, great, but if not, don't worry about 
  1862.  MB> it. 
  1863.  
  1864. I don't support System 6 any longer in new programs I write. Maintaining older
  1865. programs, I keep the System 6 stuff in. As for supporting post-7.0 features, I
  1866. implement them based on how much work it is, and how much demand there is for
  1867. them.
  1868.  
  1869.  
  1870. YHS:QSI!
  1871.  
  1872. +++++++++++++++++++++++++++
  1873.  
  1874. >From ingemar@lysator.liu.se (Ingemar Ragnemalm)
  1875. Date: 19 Aug 1994 21:27:13 GMT
  1876. Organization: (none)
  1877.  
  1878. Ola.Montan@malmo.trab.se (Ola Montan) writes:
  1879.  
  1880. >I'm writing new programs for the Macintosh and I wonder:
  1881.  
  1882. >- Is it OK today to assume that the user have System 7.0 or later, or do
  1883. >I have to make it possible to run the program on System 6 or even System 5?
  1884.  
  1885. Forget System 5. If you can make your program run on it, well, good, but that
  1886. is like paiting the back of the drawers - you know you did a great job, but
  1887. few will care.
  1888.  
  1889. System 6.0.7 is the lowest system that is interesting to support. If you
  1890. should, depends on the users. Many low-end users use System 6, especially
  1891. those on slow Macs like MacPlus, or Macs with little memory.
  1892.  
  1893. Extreme case of needing System 6: Networked games! If you make a networked
  1894. game, try to support both System 6 and non-color-QuickDraw. Many long-time
  1895. Mac users have two Macs, and one of them might be an old Plus or SE.
  1896.  
  1897. If your program is color only, there is a smaller population who will want
  1898. System 6. Not none at all, but making it work in b/w (esp non-color QD)
  1899. is more important.
  1900.  
  1901. And, as someone noted, if you make high-end applications, where most of your
  1902. users use new, high-end Macs, well, who will notice?
  1903.  
  1904. >- If I have to be able to run on System 6, what do I have to think about?
  1905. >All "compatiblity guidelines" tells about what to think about to run in
  1906. >System 7.
  1907.  
  1908. Only use stuff described in IM 1-5. GWorlds can be demanded, at least from
  1909. color users, since they can install it under sys 6. If you can't run System 6
  1910. yourself, you better find someone who do, or you'll never know.
  1911.  
  1912. --
  1913. - -
  1914. Ingemar Ragnemalm, PhD
  1915. Image processing, Mac shareware games
  1916. E-mail address: ingemar@isy.liu.se or ingemar@lysator.liu.se
  1917.  
  1918. +++++++++++++++++++++++++++
  1919.  
  1920. >From quinn@cs.uwa.edu.au (Quinn "The Eskimo!")
  1921. Date: Sun, 21 Aug 1994 15:26:10 +0800
  1922. Organization: Department of Computer Science, The University of Western Australia
  1923.  
  1924. In article <33383h$cm0@newsy.ifm.liu.se>, ingemar@lysator.liu.se (Ingemar
  1925. Ragnemalm) wrote:
  1926.  
  1927. >System 6.0.7 is the lowest system that is interesting to support.
  1928.  
  1929. I disagree.  6.0.5 has most of the features of 6.0.7 (specifically
  1930. _Gestalt) but is a lot more reliable on machines that don't need 6.0.7 (ie
  1931. LC, IIsi).  If you're going to support System 6 you should support back to
  1932. 6.0.5!
  1933. -- 
  1934. Quinn "The Eskimo!"      <quinn@cs.uwa.edu.au>     "Support HAVOC!"
  1935. Department of Computer Science, The University of Western Australia
  1936.  
  1937. +++++++++++++++++++++++++++
  1938.  
  1939. >From kaufman@Xenon.Stanford.EDU (Marc T. Kaufman)
  1940. Date: 22 Aug 1994 03:08:30 GMT
  1941. Organization: Computer Science Department, Stanford University.
  1942.  
  1943. In article <quinn-2108941526100001@edu-dynamic5.educ.ecel.uwa.edu.au>,
  1944. Quinn "The Eskimo!" <quinn@cs.uwa.edu.au> wrote:
  1945. >In article <33383h$cm0@newsy.ifm.liu.se>, ingemar@lysator.liu.se (Ingemar
  1946. >Ragnemalm) wrote:
  1947.  
  1948. ->System 6.0.7 is the lowest system that is interesting to support.
  1949.  
  1950. >I disagree.  6.0.5 has most of the features of 6.0.7 (specifically
  1951. >_Gestalt) but is a lot more reliable on machines that don't need 6.0.7 (ie
  1952. >LC, IIsi).  If you're going to support System 6 you should support back to
  1953. >6.0.5!
  1954.  
  1955. I have one customer who is running 6.0.3, because he likes the Quickdraw
  1956. bug that caused hairlines not to fatten when copied to a larger bitmap.
  1957. He needed that feature to create hairline targets on 35mm slides.  I think
  1958. we can agree not to go back to 4.x, though, can't we?
  1959.  
  1960. Marc
  1961.  
  1962.  
  1963. ---------------------------
  1964.  
  1965. >From h+@nada.kth.se (Jon W{tte)
  1966. Subject: The System 7.5 Think Debugger Bug - and fix!
  1967. Date: Fri, 19 Aug 1994 22:27:29 +0200
  1968. Organization: Royal Institute of Something or other
  1969.  
  1970. As you may now be aware of, there is a bug in Think Debugger 
  1971. and/or System 7.5 that makes the debugger freeze on startup for 
  1972. several kinds of projects.
  1973.  
  1974. It worked in 7.5b5, but not now. Everyone at apple says that 
  1975. nothing changed in the Process Manager between them. The bug, 
  1976. however, DOES depend on Think Debugger calling GetNextEvent in 
  1977. a tight loop, waiting for an app4Evt that doesn't get there.
  1978.  
  1979. This INIT, when installed, patches GetNextEvent to call 
  1980. WaitNextEvent and give 6 in background time, which makes the 
  1981. debugger work once again. Since WaitNextEvent calls 
  1982. GetNextEvent internally, AND process switched happen during 
  1983. WaitNextEvent calls, I have a nice re-entrancy problem which I 
  1984. solve with a linked list of A5 values in the system heap. This 
  1985. list is NOT cleaned up, and consists of nonrelocatable blocks, 
  1986. so use with care! (it doesn't crash, though)
  1987.  
  1988. Source included
  1989.  
  1990. Enjoy,
  1991.  
  1992.                 / h+
  1993.  
  1994. (Pardon the binary posting on this group, but it's SOOO small, 
  1995. important and relevant...)
  1996.  
  1997. (This file must be converted with BinHex 4.0)
  1998. :#d&bBfKTGQ8ZFfPd!&0*9%46593K!*!%"Ld!N!6D4P0*9#%!!J!!"Leb6'&e!J#
  1999. 3""B!!!d!$8G145dq9dj&)%P1596H@!!@plS!N!1!!*!%!H6TS19H!*!8!EX!N!6
  2000. rN!4*6NP89dj&)3%!URT2MUTkL[S!!!(q!*!'!68!N!6D+J#3#%Q%%3!)(2b83a!
  2001. V!94,T9i#L+fB8,L`SeBec9BMfcTU5@aFfq5N'Xel*#IKpXRY3aiR%MR6jb"3cN[
  2002. VpVYM@1FpXK8b`kN8kqYjTkpR9Pp8UlfE*-a0NYj*NYj*NZ+bNkT-8Z8QDPY(,BR
  2003. 9DRAMGeT-b@l"hV'%0p@-)b[Ac$eqleT0aaFq[NhV0q'iFU-6hS3m@RpIfq3XKrF
  2004. DhlA'Pk2epl9eP&diN!"m#h'DVQlC[hUY#`(9c0fYFiZDN!#rCNh)efi)j'aer,L
  2005. q,AT!3Fc"dbVJ-+(c#e!`q4BRZdTR-kjd'*0D[&cJJQFJ0M8@YqmlY9B9b*h`$14
  2006. 1cUUC1eV`q0,PqT3EAGB2X3P23qiS*'I0ZkE'V,4UmfqBG(`pFH0B4k&31rXHQ5E
  2007. #+)$!c&5AFm@+Fk56!!!0$3CYB@PZ,Q1H3*U))!(FhPJ!&[Hk!*!$J!#3"!(NkD$
  2008. 3+!#3%4B!N!MrN!4849K85d&)6!%!UE8-1+TkLQ-!!!&q!!!(rJ#3!pN!!!-T#dX
  2009. dl`#3"U1-%3!)(!`k"&(aqD"SC3Dj+c,)Gr&*N!#EjkQCUfDqj!N`2E!RVJka160
  2010. )K2P5-Ma1Q*E8-p3aS9dR"-Tjc!!hCRhNXYj[RCf[)8#Z'8lVA9eZ9Y0MG`)RUA0
  2011. UTiF,MNVZRCb9h"fJh91SK,2%M*P,j*3,PHYbqr13!!m(FH$@jk&SF+I#plbE2@0
  2012. HYY[*cY(CFXMNHFZaMc+a,aY%"DqI-j,#2pJUrJ5)KDS3imQ)D3E1KA$T(Rc#X&e
  2013. SpSk)jV0Z#4lDpX+0qcN+G66`"i*G(8f-Q6,c+TlBYU!&#Nlaj!%)-S$*86*BMl#
  2014. 9VH%[XZBP-m))ME!RE%#1f4(k%8TQ+`&B2H$e2(S!UdB"2ZS64LK"!#0)BJ6p#!$
  2015. ZqQa!9RD%(AP+RKdjCNH'M)`B33)$)!m!0,$fpq&c-"KdiBe-iH+6-FMBAT+')Sm
  2016. 3(Vmlqf!5SG[aNjAS,8kP@PJ0Lj&(U+!"6ID4H9a2i50,dX3--jQNjK%lmV`SE-r
  2017. !Rr2"H1bjG`62FC42*UJBmcb"()jVbaEh594j"Th$b[-83hQ$kK92)i&N-DAIYJ$
  2018. ZYaifH,qj-Kd-1R93`m2i&,A-98M&PVBcf,-q3DF9qBA4DbVJ)NNM1G1V*2eZVdV
  2019. b%XfjP1*FmHaT&#R8eXGe*d8dA0QhH,"TTm'$jV,RM*X`hVVCZ[q@dZ[fUe,1[T@
  2020. LM'EX5e$i`q+kKlkrl)'k2m'jHA'$UIP(apVr0ajEZadIplhm"131ff93!3hZ0`[
  2021. "j64c[e8JK9b)"A#ic%PT**JBJD*X@#hT@pGcMar*8jRCHNCD`A%BBhJej&P'!U-
  2022. 0q8DfMe'+T+81KLC@-Tr%+cS#JXQh3lLE4T,SI(30Hjd@lpH'rKbY[$"aCB3b@d$
  2023. '&CqL3@8C,U2iml#f)PP'"2Rc([f%3T&q0m'(2BHScA6"N`fPCAJAajm(IY93QE6
  2024. MK)ip'mdD8DHe[PIV,FC9JU,BLPE'eSJ3HhGMp!0kaJL*LN23XF`*G)2D3$*fi&X
  2025. C&l3*d3*LVX'QaJMSf##+D!,D&#!aPE0#Nk[8'Bm&Rd#5%Y0!p`c0LEYpk*!!+KH
  2026. PdP-G4c!5-V`#E93H8J#N*B'8'LcZ*AYmGCXNi3IPKr0ZG*UXVZlAq*4m8)Iad2#
  2027. 43!Z#N!!bXqMBq5R`X!1%eh#XF**SLPlZd`BJ1qrK0+2rVYhf&MqSA-Fb6k1Y*3m
  2028. +iND+dYZmM#eG(,EP@Kbk+'i"E9(&Yh0femkkMcpPIldG5`9G')'p,pCA6S"9JK1
  2029. F[6IUE+'I83QV($E$Jqq(65diD"%1MU#b`'TXV!&0FjRDe9PMk"LJ*QL"f@kmGYV
  2030. YXEH8HVIXPV%EQ84XbQP5'XbcRqjJ[fAr!3#3!dbQ!!!:
  2031.  
  2032.  
  2033. --
  2034.   Jon Wätte (h+@nada.kth.se), Hagagatan 1, 113 48 Stockholm, Sweden
  2035.  
  2036. "TextEdit does everything right."
  2037.     — Jon W{tte
  2038.  
  2039.  
  2040. +++++++++++++++++++++++++++
  2041.  
  2042. >From tree@bedford.symantec.com (Tom Emerson)
  2043. Date: Sat, 20 Aug 1994 17:15:43 -0800
  2044. Organization: Symantec Development Tools Group
  2045.  
  2046. In article <9668AA7AE251.45173@klkmac004.nada.kth.se>, h+@nada.kth.se (Jon
  2047. W{tte) wrote:
  2048.  
  2049. > As you may now be aware of, there is a bug in Think Debugger 
  2050. > and/or System 7.5 that makes the debugger freeze on startup for 
  2051. > several kinds of projects.
  2052. > It worked in 7.5b5, but not now. Everyone at apple says that 
  2053. > nothing changed in the Process Manager between them. The bug, 
  2054. > however, DOES depend on Think Debugger calling GetNextEvent in 
  2055. > a tight loop, waiting for an app4Evt that doesn't get there.
  2056.  
  2057. Some background on this: the TPM/THINK Debugger IAC worked through 7.5b6.
  2058. >From that point on some change in the new system software broke the
  2059. communications mechanism. The problem only occurs for some projects (one
  2060. commonality is the number of static constructors it contains - we haven't
  2061. seen it with large C applications), and we have yet to determine the exact
  2062. circumstances that cause the problem to appear or what changed in the
  2063. System software to hose it. We've talked to the engineer responsible for
  2064. the Process Manager in 7.5 and he doesn't know what changed either, so
  2065. this is a mystery. The loop that waits on app4Evt's and updateEvts appears
  2066. in both the TPM and Debugger --- which one you hang in depends on who
  2067. initiated the communication.
  2068.  
  2069. > This INIT, when installed, patches GetNextEvent to call 
  2070. > WaitNextEvent and give 6 in background time, which makes the 
  2071. > debugger work once again. Since WaitNextEvent calls 
  2072. [snip]
  2073.  
  2074. This is the fix that we will probably make, though we need to QA more
  2075. before releasing it, and it would be nice to know what actually changed in
  2076. the System to bring about the problem.
  2077.  
  2078.    -tre
  2079.  
  2080. -- 
  2081. Tom Emerson                                              Software Engineer
  2082. Development Tools Group                               Symantec Corporation
  2083.                           tree@bedford.symantec.com
  2084.   "I dreamed I had to take a test, in a Dairy Queen, on another planet."
  2085.  
  2086. +++++++++++++++++++++++++++
  2087.  
  2088. >From stevep@wrq.com (Steve Poole)
  2089. Date: Mon, 22 Aug 1994 10:59:25 -0800
  2090. Organization: Walker Richer & Quinn
  2091.  
  2092. In article <tree-2008941715430001@155.64.60.21>, tree@bedford.symantec.com
  2093. (Tom Emerson) wrote:
  2094.  
  2095. > communications mechanism. The problem only occurs for some projects (one
  2096. > commonality is the number of static constructors it contains - we haven't
  2097. > seen it with large C applications), and we have yet to determine the exact
  2098.  
  2099. I've seen it with large C apps, Tom.
  2100.  
  2101. Steve
  2102.  
  2103. - ------------------------------------------------------------------------
  2104. - Internet: stevep@wrq.com  -  AOL: Spoole  -  INTEL 80x86: Just say NOP -
  2105. - "Nurse! Do let's pretend that I'm a hungry hyaena, and you're a bone!" -
  2106. - ------------------------------------------------------------------------
  2107.  
  2108. ---------------------------
  2109.  
  2110. >From h+@nada.kth.se (Jon W{tte)
  2111. Subject: Think Debugger & INIT source code
  2112. Date: Sun, 21 Aug 1994 16:52:25 +0200
  2113. Organization: Royal Institute of Something or other
  2114.  
  2115. The INIT I sent out a day ago to fix the System 7.5 bug when 
  2116. using the Think Debugger _did_ fix the problem, but it didn't 
  2117. do it by behaving as advertized.
  2118.  
  2119. This is because I patched InitWindows, and from that patch 
  2120. patched GetNextEvent to instead call WaitNextEvent with a sleep 
  2121. time of 6, and added some application referencing stuff in a 
  2122. linked list to kkeep track of re-entry.
  2123.  
  2124. Well, using the patch I did, calling WaitNextEvent would 
  2125. actually result in WaitNextEvent being called twice; once with 
  2126. whatever sleep time was passed to it, and once through my path 
  2127. before it came down to GetNextEvent. Not good.
  2128.  
  2129. HOWEVER - it turns out that the Process Mangler patches out 
  2130. InitWindows so other apps don't get to it, just like with 
  2131. WaitNextEvent and GetNextEvent (which was why I laid the basic 
  2132. patch there initially...) with the exception of the Finder, 
  2133. which calls InitWindows before this patching is done. 
  2134.  
  2135. Straaaange!
  2136.  
  2137. Now, my patch hangs off InitDialogs, which, as it turns out, is 
  2138. a much better place to hang - cheaper brews, cooler people, and 
  2139. not getting patched-out by the Process Mangler. Yet, anyway :-)
  2140.  
  2141. Another complication was that I only used one location to save 
  2142. the old WaitNextEvent globally. Since some apps patch 
  2143. WaitNextEvent themselves, BEFORE they call InitDialogs, this 
  2144. was a bad thing (projects running under the Think Debugger come
  2145. to mind...)
  2146.  
  2147. Now I only patch if the saved address is 0, or the address I
  2148. get from WNE is the same as the saved address, which it turns 
  2149. out to be for the vast majority of applications; even for the 
  2150. Finder (It's surprising that the Finder does ANYTHING like we
  2151. mortals :-)
  2152.  
  2153. Anyway, now this INIT behaves as advertized, and can also serve 
  2154. as example code of how to write a skanky INIT that gets at the 
  2155. WaitNextEvent mechanism and circumvents the Process Manager. In
  2156. pure inline assembly, no less. Code review invited.
  2157.  
  2158. Cheers,
  2159.  
  2160.                 / h+
  2161.                 Jon W{tte
  2162.  
  2163.  
  2164. (This file must be converted with BinHex 4.0)
  2165. :#d&bBfKTGQ8ZFfPd!&0*9%46593K!*!%"ed!N!5#B&0*9#%!!J!!"eeb6'&e!J#
  2166. 3""B!!!d!$8G145dq9dj&)%P15944H!!-rCS!N!1!!*!%!@GFS-Ne!*!8!Nm!N!6
  2167. rN!4*6NP89dj&)3%!URT2MUTp-jX!!!+L!*!'!FN!N!55J3#3#'Kf%3!)!$cY(-i
  2168. 3HMf8I2+'Y30lpJ9d8memb4-m6aDXlVL(QSpb10pZ9)ZiYXP*0CVh5%l#lC2EKcc
  2169. J!FfC2NIhB%h'pI5lBeMR2E)9lLK!DGQpC(qlL8q-[R9LcFU[p'fAmHUEXeG3c3U
  2170. EI,XjE-Kh%Z4ZPr%Dc(ElMAY,6khjM&E4Fdr$,cFHd@J&*Ve@1f#DFH4dF&CG[fG
  2171. UlTV1$204`9%1jH0pmDA(acGU9"HR9@[*5*Mi"XSdAbD0Db-S(8`%,HZNR$NRE%C
  2172. E+T2T%*NdL$+*Sd5QT&'"(52c(dpi8mdiXR,0h12hVY9dr&E(YfRp*[3Y0cVK6FL
  2173. MpIHe6FkUeA4FAq1VlV"ADZcTYrE2Cra9f[HqYNj+Vh%A[Z-ZeElhYA88#3H5EjP
  2174. r@kd!LE8Z"15drkEf-he*KjEp+fM2fXiYDN+HQM@G%aU!R+f1(pHh43r)KcPi1Vm
  2175. !qC*[D49`8Zr4UB`Ik6!QYALj`!A23'aU,'lIGfUY+T!!1q%Cb*fF960h00raTF[
  2176. e+6HkV"pL%jk'h&&)cTVr(i(l5Hc'r4b&3PG!JkM)G!)Nr@pJ(MmJTI#Xd6LM,63
  2177. DZkdQJ"$FhfGD,ZG2ScJrNNN0$3CYB@PZ,Q1H3)%jZJ&I8AJ!$2fD!*!$J!#3"!&
  2178. RA+"TR!#3%4B!N!MrN!4849K85d&)6!%!URdcEkTp-fF!!!&q!!!+P`#3!r8!!!1
  2179. T,)-c)J#3"YHF%3!)(!`k"&(*(%4&TL-!A!I6d!421k102PIY$"*K[K32H##8e$2
  2180. 8-D'GcSfqSVL2A0DlBd3G$T!!j`#RpDj(MmG-63UGSLE9fUQ@6ph9EU)Sm0LifMj
  2181. ecqA6plhPYP'1jl&,TcpAkjCYEVP3$l@pN!!261C66ZC6*[2a)&-2G'MC(kDA[QF
  2182. ki&Sq+0aZiLfMRKKekbQ3!0[a2q(iRp$qIhLmdr1PTUP$NhXRCb9h9kqdHkT-`h,
  2183. -'83&VjmcNZ+XmX-R3#a8K4K24N`cm%&46lS(CqrS5Xj'meQh"2H6f)hl13Te02!
  2184. (JPdG6BbCST3*qiXql5`!N!-,6PIb!!3C`13S'Da(q0U&lmMDQCb5!H@%Hi32b&2
  2185. ##AYbP-a@!T!!!Dmq1i"9B`!Ip5+--))!6T!!a!Rk%3$FjDef[FF)Ir,m#$r+M9"
  2186. 1"T`F*b01KTa-q%T@!U"RMhrf$(iBc@B6q&C9F2fpYFMBNTF9p'(!hV-H0dYicmU
  2187. UY20DPCApR&hdHTNi@8'bjV2&SZGr&r!FdbE2862@kdRNF0P*$RP#4e&c0$k2QLp
  2188. 4U"[8Ar-UNdJ55hSpNF#6iA'I6`GEdGPXh"QeA"3[dDK'#i)9C&G`j(5Qk6",@U&
  2189. [#-$cNNZ9Qkf6kH3X1[N+l@ZPj'[0kbqb6+0a1TkGNYPm+crNScXkI6iDE$MAh)V
  2190. LAXhKrJI+f@3DSEck%BUfKV'$8AM+iTE$q9QbiA$05hZ&Dr[L"L[lEccZ$,3"XFC
  2191. 52R`iHVd8hm&PTZD'hq"m9EPiLf8GlYZ)T"8kLBTU`U0e+PY&`[XBZJF'$l&l`[e
  2192. lm)M'$Ni(*1Dk-dKKq5p11rdrdT6rP5DRXPAm-dhh#!iGpSReheNL()l'ce@l-Hl
  2193. J*J(ZQfAYAk0"M9c+@q$`TU&,Um!@#'6PVPmC)a)e&`J,T5'A+Z@5VJTZLVRPU@`
  2194. c3IJN*1c3DI[M(IAplAdTEdj$CAqdP4S0Pk*!mAE1khUEY"%&-e$f+I*FDfl-X5f
  2195. dD[)#&T,R[rE`EqQ*3"j32Si)1Up8lFVLJ-eee!Ub6Id)5Z8mN!!k8(9'pJZ24%b
  2196. 6[S1MmC!!6cY&)Z(1@a&23kMkPS+Jq4)YDPHG`8Ub2ZqNk+bQB#6Vd,SNE#3L085
  2197. jp*dT08RZab80KDLfh`Q"KhHBV%9N&Vb2rCf2Q-YM%'K*GTREKF+Rhe&`RVSkqj,
  2198. NYFqkLcF8U"fYq#1)C88YYN)`9!NPr99Hl2VUaE&2p#p,iV%2+&JacQ!+e9#$@M4
  2199. NF1%0ZM-ZU@bc@k$D")F5-k$P69NNhbGNJ(!%CBffd5dCMj%SC3R3Z+HHpKm#N!!
  2200. BYe8Gl`R("D45LEGJV'i%'D"TF!%9%@`r(T!!CRp#h3(m0$ailIji`$TdRcSXj+1
  2201. VIKF%U96YmKLA&J8L,#f0H@R)qUkGBi$F0QZhek3GAkG4GD'D+VZAj+-`cM5jGhi
  2202. CfkMXjL4e'&Ra4HT!YFpHf8rr(BmRf"mrT)3,QR+LYEPCU#1-"Uj`pCh9Vfk0Vk-
  2203. GpqRJXjqqJA3(Td0+J`p3i"HlaJP3[l[ek,J4cUl@&NdPBQYN#Je9!kI@rF!qX2m
  2204. "clB!!!:
  2205.  
  2206.  
  2207. --
  2208.   Jon Wätte (h+@nada.kth.se), Hagagatan 1, 113 48 Stockholm, Sweden
  2209.     Not speaking for the Microsoft Corporation.
  2210.  
  2211.  
  2212. ---------------------------
  2213.  
  2214. >From emmayche@apple.com (Mark Hartman)
  2215. Subject: [Q] How to do non-bypassable INIT?
  2216. Date: 11 Aug 1994 17:36:33 -0700
  2217. Organization: Apple Computer Inc, Cupertino, CA
  2218.  
  2219. For security reasons, I need to have an INIT loaded/run at startup whether or
  2220. not the Shift key is held down.  I know that some of the Apple-supplied
  2221. goodies do this; does anyone know what the rules are for what gets loaded
  2222. anyway if Shift is held down?
  2223. -- 
  2224. =======================================================================
  2225. The above is not guaranteed to be the opinions of anyone in particular.
  2226. =======================================================================
  2227. Mark Hartman, N6BMO | E-mail:  emmayche@apple.com | AOL: emmayche
  2228.       Macophile     |  Serious Disney enthusiast  | CIS: 75130,1434
  2229.  
  2230. +++++++++++++++++++++++++++
  2231.  
  2232. >From quinn@cs.uwa.edu.au (Quinn "The Eskimo!")
  2233. Date: Fri, 12 Aug 1994 10:55:34 +0800
  2234. Organization: Department of Computer Science, The University of Western Australia
  2235.  
  2236. In article <32eg6h$edh@apple.com>, emmayche@apple.com (Mark Hartman) wrote:
  2237.  
  2238. >For security reasons, I need to have an INIT loaded/run at startup whether or
  2239. >not the Shift key is held down.  I know that some of the Apple-supplied
  2240. >goodies do this; does anyone know what the rules are for what gets loaded
  2241. >anyway if Shift is held down?
  2242.  
  2243. The only one I know of is System 7 Tuner, which installs an INIT in the
  2244. system file that specifically opens, load and runs the tuna regardless of
  2245. whether the shift key is down.
  2246.  
  2247. Another possible solution is to disable the shift key by deleting the
  2248. 'dbex' resource in the system file.
  2249. -- 
  2250. Quinn "The Eskimo!"      <quinn@cs.uwa.edu.au>     "Support HAVOC!"
  2251. Department of Computer Science, The University of Western Australia
  2252.  
  2253. +++++++++++++++++++++++++++
  2254.  
  2255. >From radixinc@aol.com (RadixInc)
  2256. Date: 12 Aug 1994 01:42:00 -0400
  2257. Organization: America Online, Inc. (1-800-827-6364)
  2258.  
  2259. In article <32eg6h$edh@apple.com>, emmayche@apple.com (Mark Hartman)
  2260. writes:
  2261.  
  2262. "For security reasons, I need to have an INIT loaded/run at startup
  2263. whether or
  2264. not the Shift key is held down.  I know that some of the Apple-supplied
  2265. goodies do this; does anyone know what the rules are for what gets loaded
  2266. anyway if Shift is held down?"
  2267.  
  2268. There is a new INIT type that is loaded regardless of the shift key. Look
  2269. at one of the ones that always loads. I think the file type needs to be
  2270. 'scri', and other than that it's the same (INIT resource, etc.). I haven't
  2271. tested this though, so check it out yourself.
  2272.  
  2273. I hope you aren't writing a virus or something obnoxious...
  2274.  
  2275. Gregory Jorgensen
  2276. Radix Consulting Inc.
  2277.  
  2278. +++++++++++++++++++++++++++
  2279.  
  2280. >From dlb@netcom.com (David Beauchesne)
  2281. Date: Fri, 19 Aug 1994 02:52:08 GMT
  2282. Organization: NETCOM On-line Communication Services (408 261-4700 guest)
  2283.  
  2284. > There is a new INIT type that is loaded regardless of the shift key. Look
  2285. > at one of the ones that always loads. I think the file type needs to be
  2286. > 'scri', and other than that it's the same (INIT resource, etc.). I haven't
  2287. > tested this though, so check it out yourself.
  2288.  
  2289. This is correct.  Type 'scri' is used by Apple to load different
  2290. scripts (languages).  They are treated, (and coded), just like
  2291. 'INIT's, but their loading cannot be stopped with the shift key.
  2292. -- 
  2293. David L. Beauchesne                                    dlb@netcom.com
  2294. Santa Cruz, California, USA
  2295.  
  2296. ---------------------------
  2297.  
  2298. >From khurram@bga.com (Khurram Qureshi)
  2299. Subject: malloc problem in CW-4
  2300. Date: 21 Aug 1994 15:49:55 -0500
  2301. Organization: Real/Time Communications - Bob Gustwick and Associates
  2302.  
  2303. There is a problem with malloc/realloc problem which exists in CW/4. Typically
  2304. this surfaces when performing continuous memory allocations (inside a for loop
  2305. for example). This will be fixed as soon as possible.
  2306.  
  2307. Thanks.
  2308.  
  2309. ==============================
  2310. Khurram Qureshi
  2311. Metrowerks Technical Support
  2312. e-mail: khurram@bga.com
  2313. ==============================
  2314.  
  2315. ---------------------------
  2316.  
  2317. End of C.S.M.P. Digest
  2318. **********************
  2319.  
  2320.  
  2321.  
  2322.